7 $ENV{'LC_CTYPE'}= 'en_GB.UTF-8';
12 print "## updating topology of $ocean\n";
13 system('./yppedia-chart-parser',$ocean); die "$ocean $?" if $?;
18 print STDERR "## updating schema and commodities for $ocean\n";
19 system('./db-idempotent-populate',$ocean); die $? if $?;
24 sub process_some_info ($$$) {
25 my ($v,$df,$sfn) = @_;
26 my $sf= new IO::File $sfn or die "$sfn $!";
31 next if m/^\s*\#/ || !m/\S/;
35 die "$_ ?" unless defined $h;
36 if ($h =~ m/^commods|^\%[a-z]\b/) {
40 next if $h =~ m/^nocommods/;
42 next if $sfn =~ m/source-info/ && $h =~ m/^ocean/;
44 print $df $_, "\n" or die $!;
47 $sf->error and die $!;
50 sub update_master_info () {
51 foreach my $v (1..$masterinfoversion) {
52 my $dfnl= sprintf "master-info%s.txt", ($v>1 ? "-v$v" : '');
53 print STDERR "installing new $dfnl...\n";
55 my $dfn= "$rsyncdir/$dfnl";
56 my $df= new IO::File "$dfn.tmp", 'w' or die "$dfn.tmp $!";
58 process_some_info($v,$df, 'source-info.txt');
59 foreach my $ocean (sort keys %oceans) {
60 process_some_info($v,$df, '_ocean-'.(lc $ocean).'.txt');
64 rename "$dfn.tmp", "$dfn" or die $!;
75 return scalar shift @ARGV;
78 while (@ARGV && $ARGV[0] =~ m/^-/) {
82 if (s/^-d//) { $rsyncdir= optarg(); }
83 elsif (s/^-O//) { push @specoceans, optarg(); }
84 elsif (s/^-a//) { $alloceans=1; }
90 die if @specoceans && $alloceans;
92 parse_info_serverside();
95 print "### full update of specified oceans ...\n";
96 foreach my $ocean (@specoceans) {
97 die "$ocean ?" unless defined $oceans{$ocean};
100 } elsif ($alloceans) {
101 print "### full (inc.topology) update of all oceans ...\n";
102 foreach my $ocean (sort keys %oceans) {
106 print "### quick (no topology) update only (of all oceans) ...\n";
107 foreach my $ocean (sort keys %oceans) {
112 if (defined $rsyncdir) {
113 print "### master-info update ...\n";
114 update_master_info();