chiark / gitweb /
WIP ocean scraper seems to mostly work, need to do arg parsing and IO
[ypp-sc-tools.db-live.git] / yarrg / update-master-info
1 #!/usr/bin/perl -w
2
3 use strict (qw(vars));
4
5 use DBI;
6
7 use Commods;
8
9 @ARGV==1 or die;
10 my ($rsyncdir) = @ARGV;
11
12 parse_info_serverside();
13
14 foreach my $oceanname (sort keys %oceans) {
15     print STDERR "updating ocean $oceanname...\n";
16     system('./db-idempotent-populate',$oceanname); die $? if $?;
17 }
18
19 my $sfn= 'source-info.txt';
20
21 foreach my $v (1..$masterinfoversion) {
22     my $dfnl= sprintf "master-info%s.txt", ($v>1 ? "-v$v" : '');
23     print STDERR "installing new $dfnl...\n";
24     
25     my $dfn= "$rsyncdir/$dfnl";
26     my $sf= new IO::File $sfn or die "$sfn $!";
27     my $df= new IO::File "$dfn.tmp", 'w' or die "$dfn.tmp $!";
28
29     my $h;
30     while (<$sf>) {
31         chomp; s/\s+$//;
32         next if m/^\s*\#/ || !m/\S/;
33         if (m/^\S.*/) {
34             $h= $&;
35         }
36         die "$_ ?" unless defined $h;
37         if ($h =~ m/^commods|^\%[a-z]\b/) {
38             s/\t.*//;
39         }
40         if ($v<2) {
41             next if $h =~ m/^nocommods/;
42         }
43         print $df $_, "\n" or die $!;
44     }
45
46     $sf->error and die $!;
47     close $df or die $!;
48     rename "$dfn.tmp", "$dfn" or die $!;
49 }