give an error if pvpgn report insertion fails
[perl/schtarr.git] / pvpgnreport
index 1a91ddf83a63210f875786146e295b96a18be388..049ffb2c800d14b3f23a6e272b2ef9daa0ca808f 100755 (executable)
@@ -32,9 +32,20 @@ sub reportplayers {
        while (defined ($_ = readline $reportfile)) {
                # ignore leading empty lines; stop if trailing
                /\S/ or @player ? last : next;
-               my ($name, $result) = /^ (.*?) \s+ ([A-Z]+) \s*$/x
+               my ($name, $result, $ladder) = /^ (\S+) \s+ ([A-Z]+) \s* (.*)/x
                        or chomp, warn("Unknown pvpgn report player line: $_\n");
                push @player, {name => $name, result => $result};
+               if ($ladder) {
+                       my @ladderdata = $ladder =~ m{
+                               ^ \s* rating=(\d+) \s+ \[\#\d+\]
+                               \s+ prob=([\d.]+)% \s+ K=(\d+) \s+ adj=([+-]\d+) \s* $
+                       }x ? $player[-1]{ladder} = {
+                               rating => $1,
+                               prob => $2,
+                               K => $3,
+                               adj => $4,
+                       } : warn("Unknown ladder details for player $name: $ladder\n");
+               }
        }
 
        my $i = -1;
@@ -51,8 +62,9 @@ sub reportplayers {
        return \@player;
 }
 
-my $name = $ARGV[0] or die "Usage: $0 FILE\n";
-open my $reportfile, '<', "$name.txt" or die "No report file: $!\n";
+my $path = $ARGV[0] or die "Usage: $0 FILE\n";
+my ($name) = $path =~ m{([^/]+)$};
+open my $reportfile, '<', "$path.txt" or die "No report file: $!\n";
 my $report = reporthead($reportfile);
 print Dumper $report if $DBG;
 
@@ -94,7 +106,9 @@ $Db->insert("game", {
        start => time2str('%Y-%m-%d %X', $start),
        duration => sprintf('%d seconds', $end - $start),
 })->rows or die "Game insert failed: ".$Db->error."\n";
-my $gameid = $Db->last_insert_id((undef) x 4, {sequence => "game_id_seq"});
+my $gameid = $Db->last_insert_id((undef) x 4, {sequence => "game_id_seq"})
+       or die "Couldn't find our game insertion: ".$Db->error."\n";
+print "Game inserted as # $gameid\n";
 
 $Db->insert("play", {
        game => $gameid,