From 1478fddc005bdaa1fa3ab731a0bd59613502e90d Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 1 Sep 2009 00:34:50 +0100 Subject: [PATCH] new update-master-info seems to work --- yarrg/Commods.pm | 4 +- yarrg/README | 3 +- yarrg/db-idempotent-populate | 2 - yarrg/ocean-midnight.txt | 129 ----------------------------------- yarrg/source-info.txt | 50 +------------- yarrg/update-master-info | 121 +++++++++++++++++++++++--------- yarrg/web/copyrightdate | 2 +- 7 files changed, 94 insertions(+), 217 deletions(-) delete mode 100644 yarrg/ocean-midnight.txt diff --git a/yarrg/Commods.pm b/yarrg/Commods.pm index c10965b..860510e 100644 --- a/yarrg/Commods.pm +++ b/yarrg/Commods.pm @@ -88,10 +88,12 @@ sub parse_info1 ($$) { @ctx= (sub { push @nocm, lc $_; }); } elsif (m/^ocean (\w+)$/) { my $ocean= $1; + keys %{ $oceans{$ocean} }; @ctx= (sub { $ocean or die; # ref to $ocean needed to work # around a perl bug my $arch= $_; + keys %{ $oceans{$ocean}{$arch} }; $ctx[1]= sub { $oceans{$ocean}{$arch}{$_} .= $src; }; @@ -223,7 +225,7 @@ sub parse_info_serverside () { sub parse_info_serverside_ocean ($) { my ($oceanname) = @_; die "unknown ocean $oceanname ?" unless exists $oceans{$oceanname}; - parse_info1("ocean-".(lc $oceanname).".txt",'s'); + parse_info1("_ocean-".(lc $oceanname).".txt",'s'); } sub parse_pctb_commodmap () { diff --git a/yarrg/README b/yarrg/README index ac0240e..a468b9a 100644 --- a/yarrg/README +++ b/yarrg/README @@ -172,8 +172,7 @@ for assisting players of Yohoho Puzzle Pirates. ypp-sc-tools and YARRG are Copyright (C) 2009 Ian Jackson -Copyright (C) 2009 Stephen Early -Copyright (C) 2009 Clare Boothby¬ +Copyright (C) 2009 Clare Boothby This program is free software: you can redistribute it and/or modify it under the terms of diff --git a/yarrg/db-idempotent-populate b/yarrg/db-idempotent-populate index 69703a6..143e2ef 100755 --- a/yarrg/db-idempotent-populate +++ b/yarrg/db-idempotent-populate @@ -42,8 +42,6 @@ my ($oceanname) = @ARGV; #---------- setup ---------- parse_info_serverside(); -parse_info_serverside_ocean($oceanname); -our $ocean= $oceans{$oceanname}; db_setocean($oceanname); db_writer(); diff --git a/yarrg/ocean-midnight.txt b/yarrg/ocean-midnight.txt deleted file mode 100644 index f7c8059..0000000 --- a/yarrg/ocean-midnight.txt +++ /dev/null @@ -1,129 +0,0 @@ -routes Midnight - # Try to include "shortcut" routes (those where you can chart a - # league that isn't actually on any inter-island charts), but if you - # don't it won't affect things too much. - - # Ruby internal - Olivia, Midsummer, 3 - Midsummer, Cranberry, 2 - Olivia, Lynx, 5 - Olivia, Eta, 7 - Cranberry, Eta, 3 - Lynx, Eta, 3 - Lynx, Islay of Luthien, 5 - Eta, Islay of Luthien, 4 - Islay of Luthien, Jorvik, 5 - Eta, Jorvik, 5 - - # Pearl internal and interarch - Cleopatra, O'Reilly, 3 - Cleopatra, Zeta, 4 - Cleopatra, Nuptial, 6 - O'Reilly, Nuptial, 4 - O'Reilly, Zeta, 6 - Nuptial, Zeta, 4 - Nuptial, Ostreum, 6 - Zeta, Tadpole, 4 - Tadpole, Ostreum, 6 - Tadpole, Frond, 4 - Frond, Ostreum, 4 - Frond, Zeta, 6 - Nuptial, Islay of Luthien, 10 - Ostreum, Wrasse, 6 - Ostreum, Gaea, 10 - Frond, Wrasse, 9 - Frond, Gaea, 13 - - # Diamond internal and interarch - this has lots of shortcut routes - Turtle, Jorvik, 6 - Turtle, Papaya, 3 - Turtle, Cnossos, 8 - Turtle, Alpha, 7 - Papaya, Byrne, 3 - Papaya, Alpha, 6 - Papaya, Oyster, 8 - Papaya, Winter Solstice, 11 - Cnossos, Alpha, 3 - Cnossos, Winter Solstice, 4 - Cnossos, Guava, 6 - Winter Solstice, Guava, 9 - Winter Solstice, Alpha, 6 - Winter Solstice, Oyster, 5 - Winter Solstice, Park, 11 - Winter Solstice, Delta, 16 - Winter Solstice, Byrne, 9 - Alpha, Oyster, 3 - Oyster, Park, 7 - Oyster, Delta, 12 - Alpha, Byrne, 4 - Byrne, Remora, 10 - Papaya, Remora, 8 - - # Emerald internal and interarch to Jet and Opal - Wrasse, Guava, 5 - Wrasse, Gaea, 5 - Wrasse, Epsilon, 11 - Guava, Epsilon, 7 - Gaea, Epsilon, 4 - Gaea, Tinga, 8 - Epsilon, Emperor, 3 - Epsilon, Spring, 6 - Emperor, Spring, 4 - Epsilon, Tinga, 5 - Tinga, Spring, 4 - Tinga, Hephaestus, 11 - Spring, Hephaestus, 8 - Tinga, Orca, 8 - - # Opal internal - Orca, Endurance, 3 - Orca, Norse, 5 - Orca, Nu, 4 - Nu, Norse, 3 - Nu, Endurance, 3 - Nu, Oseberg, 4 - Norse, Oseberg, 6 - Norse, Waterberry, 4 - Waterberry, Boyle, 3 - Boyle, Flow, 3 - Flow, Oseberg, 3 - - # Jet internal - Hephaestus, Namath, 6 - Hephaestus, Xi, 4 - Hephaestus, Lagniappe, 8 - Hephaestus, Dugong, 10 - Namath, Rhinoceros Ridge, 3 - Rhinoceros Ridge, Lagniappe, 2 - Xi, Lagniappe, 5 - Xi, Chaparral, 4 - Xi, Eclipse, 6 - Chaparral, Eclipse, 4 - Lagniappe, Dugong, 3 - Lagniappe, Eclipse, 5 - - # Coral internal and interarch to Jet - Park, Angelfish, 5 - Angelfish, Meke, 4 - Park, Delta, 6 - Delta, Angelfish, 3 - Delta, Macaw, 5 - Macaw, Monsoon, 3 - Monsoon, Chaparral, 6 - Monsoon, Turongo, 4 - Monsoon, Durian, 6 - Turongo, Durian, 3 - Turongo, Angelfish, 7 - Turongo, Delta, 8 - Turongo, Park, 11 - - # Sapphire internal - Remora, The Horseshoe Crabs, 3 - Remora, Beta, 3 - The Horseshoe Crabs, Verdant Atoll, 3 - The Horseshoe Crabs, Beta, 5 - Beta, Iris, 4 - Verdant Atoll, Uxmal, 3 - Verdant Atoll, Iris, 6 - Uxmal, Iris, 4 - Iris, Vernal Equinox, 3 diff --git a/yarrg/source-info.txt b/yarrg/source-info.txt index 1d68915..2e3382f 100644 --- a/yarrg/source-info.txt +++ b/yarrg/source-info.txt @@ -123,55 +123,7 @@ commods wood 175kg 250l ocean Midnight - Coral - Angelfish Island - Delta Island - Meke Island - Park Island - Diamond - Alpha Island - Byrne Island - Cnossos Island - Oyster Island - Papaya Island - Turtle Island - Winter Solstice - Emerald - Emperor Island - Epsilon Island - Gaea Island - Guava Island - Spring Island - Tinga Island - Wrasse Island - Jet - Chaparral Island - Eclipse Island - Hephaestus' Forge - Lagniappe Island - Namath Island - Xi Island - Opal - Endurance Island - Nu Island - Orca Island - Waterberry - Pearl - Cleopatra's Pearls - Frond Island - Ostreum Island - Zeta Island - Ruby - Eta Island - Cranberry Island - Islay of Luthien - Jorvik Island - Midsummer - Sapphire - Beta Island - Iris Island - Remora Island - Vernal Equinox +ocean Sage client ypp-sc-tools yarrg lastpage diff --git a/yarrg/update-master-info b/yarrg/update-master-info index 4c1547b..1dd432f 100755 --- a/yarrg/update-master-info +++ b/yarrg/update-master-info @@ -1,49 +1,104 @@ #!/usr/bin/perl -w use strict (qw(vars)); - use DBI; - use Commods; -@ARGV==1 or die; -my ($rsyncdir) = @ARGV; -parse_info_serverside(); +sub full ($) { + my ($ocean) = @_; + quick($ocean); + print "## updating topology of $ocean\n"; + system('./yppedia-chart-parser',$ocean); die $? if $?; +} -foreach my $oceanname (sort keys %oceans) { - print STDERR "updating ocean $oceanname...\n"; - system('./db-idempotent-populate',$oceanname); die $? if $?; +sub quick ($) { + my ($ocean) = @_; + print STDERR "## updating schema and commodities for $ocean\n"; + system('./db-idempotent-populate',$ocean); die $? if $?; } -my $sfn= 'source-info.txt'; +my $rsyncdir; -foreach my $v (1..$masterinfoversion) { - my $dfnl= sprintf "master-info%s.txt", ($v>1 ? "-v$v" : ''); - print STDERR "installing new $dfnl...\n"; +sub update_master_info () { + my $sfn= 'source-info.txt'; + + foreach my $v (1..$masterinfoversion) { + my $dfnl= sprintf "master-info%s.txt", ($v>1 ? "-v$v" : ''); + print STDERR "installing new $dfnl...\n"; - my $dfn= "$rsyncdir/$dfnl"; - my $sf= new IO::File $sfn or die "$sfn $!"; - my $df= new IO::File "$dfn.tmp", 'w' or die "$dfn.tmp $!"; - - my $h; - while (<$sf>) { - chomp; s/\s+$//; - next if m/^\s*\#/ || !m/\S/; - if (m/^\S.*/) { - $h= $&; - } - die "$_ ?" unless defined $h; - if ($h =~ m/^commods|^\%[a-z]\b/) { - s/\t.*//; - } - if ($v<2) { - next if $h =~ m/^nocommods/; + my $dfn= "$rsyncdir/$dfnl"; + my $sf= new IO::File $sfn or die "$sfn $!"; + my $df= new IO::File "$dfn.tmp", 'w' or die "$dfn.tmp $!"; + + my $h; + while (<$sf>) { + chomp; s/\s+$//; + next if m/^\s*\#/ || !m/\S/; + if (m/^\S.*/) { + $h= $&; + } + die "$_ ?" unless defined $h; + if ($h =~ m/^commods|^\%[a-z]\b/) { + s/\t.*//; + } + if ($v<2) { + next if $h =~ m/^nocommods/; + } + print $df $_, "\n" or die $!; } - print $df $_, "\n" or die $!; + + $sf->error and die $!; + close $df or die $!; + rename "$dfn.tmp", "$dfn" or die $!; + } + +} + + +my @specoceans; +my $alloceans; + +sub optarg () { + return $_ if length; + die unless @ARGV; + return scalar shift @ARGV; +} + +while (@ARGV && $ARGV[0] =~ m/^-/) { + $_= shift @ARGV; + last if m/^--?$/; + while (m/^-./) { + if (s/^-d//) { $rsyncdir= optarg(); } + elsif (s/^-O//) { push @specoceans, optarg(); } + elsif (s/^-a//) { $alloceans=1; } + else { die "$_ ?"; } } +} + +die if @specoceans && $alloceans; + +parse_info_serverside(); + +if (@specoceans) { + print "### full update of specified oceans ...\n"; + foreach my $ocean (@specoceans) { + die "$ocean ?" unless defined $oceans{$ocean}; + full($ocean); + } +} elsif ($alloceans) { + print "### full (inc.topology) update of all oceans ...\n"; + foreach my $ocean (sort keys %oceans) { + full($ocean); + } +} else { + print "### quick (no topology) update only (of all oceans) ...\n"; + foreach my $ocean (sort keys %oceans) { + quick($ocean); + } +} - $sf->error and die $!; - close $df or die $!; - rename "$dfn.tmp", "$dfn" or die $!; +if (defined $rsyncdir) { + print "### master-info update ...\n"; + update_master_info(); } diff --git a/yarrg/web/copyrightdate b/yarrg/web/copyrightdate index 26b7264..e7d2dc8 100644 --- a/yarrg/web/copyrightdate +++ b/yarrg/web/copyrightdate @@ -1 +1 @@ -Copyright 2009 Ian Jackson, Steve Early, Clare Boothby \ No newline at end of file +Copyright 2009 Ian Jackson, Clare Boothby \ No newline at end of file -- 2.30.2