chiark / gitweb /
Export for people's convenience
[ypp-sc-tools.main.git] / yarrg / commod-email-processor
index d2f0e819f6ef8c0f41626424fe13beb624d4f088..0c16cd196f8e6f53268c6003a9015f8e33f8977e 100755 (executable)
 # are used without permission.  This program is not endorsed or
 # sponsored by Three Rings.
 
-# Emails are:
-#  multipart/mixed, containing
-#   text/plain; name="metadata"; charset="utf-8"
-#   Content-Disposition: inline; filename="metadata"
-#     ocean\t<ocean>           canonical mixed case
-#     island\t<island>         canonical mixed case
-#     timestamp\t<digits>      time_t (non-leap secs since start of 1970 UTC)
-#     clientname\t<cname>      may contain spaces
-#     clientversion\t<cversion>        may contain spaces
-#     clientfixes\t<cfixes>    space-delimited list
-#     clientspec\t<cspec>      <cname>\t<cversion>\t<cfixes>
-#     servername\t<sname>      may contain spaces
-#     serverversion\t<sversion>        may contain spaces
-#     serverfixes\t<sfixes>    space-delimited list
-#     serverspec\t<sspec>      <sname>\t<serverversion>\t<serverfixes>
-#   application/octet-stream; name="deduped.tsv.gz"
-#   Content-Disposition: attachment; filename="deduped.tsv.gz"
-#     <base64>
-
 use strict (qw(vars));
 
 use POSIX;
 use MIME::Parser;
 
+BEGIN {
+    my $selfdir= $0;
+    $selfdir =~ s,/+[^/]*$,,;
+    chdir("$selfdir") or die "$selfdir $!";
+}
+
 use Commods;
 use CommodsDatabase;
 
@@ -111,7 +98,9 @@ sub main () {
     db_setocean($md{'ocean'});
     my $dbfn= db_filename();
     (stat $dbfn) or die "stat database $dbfn failed $!\n";
+    db_writer();
     db_connect();
+    db_onconflict(sub { print STDERR "temporary failure: @_\n"; exit 75; });
 
     my ($islandid) = $dbh->selectrow_array(
               "SELECT islands.islandid
@@ -200,7 +189,7 @@ sub main () {
 
     pipethrough_run_finish($pt, 'gunzip <$deduped_tsv.gz');
 
-    print "\n";
+#    print "\n";
     $dbh->commit();
 
     # select * from ((buy natural join commods) natural join stalls) natural join islands;