]> Sergey Matveev's repositories - public-inbox.git/blobdiff - scripts/import_gmane_spool
use ORIGINAL_RECIPIENT once again
[public-inbox.git] / scripts / import_gmane_spool
index b102a21d5bc81868590b46f8d524df4f0060f755..3cda0bf6d7dc8d2c5517347d103849627467012b 100755 (executable)
@@ -2,27 +2,37 @@
 # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
 # License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt)
 #
-# One-off script to convert an slrnpull news spool from gmane
+# One-off script to convert an slrnpull news spool from gmane, usage:
+=begin usage
+       mkdir -p $HOME/.public-inbox
+       MAINREPO=/path/to/your/repo.git
+       export ORIGINAL_RECIPIENT='list@example.com'
+       git init --bare $MAINREPO
+       export GIT_CONFIG=$HOME/.public-inbox/config
+       git config publicinbox.$LISTNAME.address $ORIGINAL_RECIPIENT
+       git config publicinbox.$LISTNAME.mainrepo $MAINREPO
+       unset GIT_CONFIG
+       ./import_gmane_spool SLRNPULL_ROOT/news/foo/bar
+=cut
 use strict;
 use warnings;
-use Parallel::ForkManager;
 use Email::Simple;
 use PublicInbox::Filter;
+use PublicInbox::Config;
 use IPC::Run qw(run);
-my $usage = "$0 SLRNPULL_ROOT/news/foo/bar MAIN_REPO FAIL_REPO";
-my $spool = shift @ARGV or die "Usage: $usage\n";
-my $main_repo = shift @ARGV or die "Usage: $usage\n";
-my $fail_repo = shift @ARGV or die "Usage: $usage\n";
-my $nproc = `nproc 2>/dev/null` || 4;
-my $pm = Parallel::ForkManager->new($nproc);
-my @args = ('public-inbox-mda', $main_repo, $fail_repo);
+sub usage { "Usage:\n".join("",grep(/\t/, `head -n 24 $0`)) }
+my $spool = shift @ARGV or die usage();
+defined $ENV{ORIGINAL_RECIPIENT} or die usage();
+my @args = ('public-inbox-mda');
 
-foreach my $n (<$spool/*>) {
-       $n =~ m{/\d+\z} or next;
-       $pm->start and next;
+chdir $spool or die "chdir $spool failed: $!\n";
+
+foreach my $n (sort { $a <=> $b } grep(/\d+\z/, glob("*"))) {
        if (open my $fh, '<', $n) {
-               local $/;
-               my $s = Email::Simple->new(<$fh>);
+               my $s = eval {
+                       local $/;
+                       Email::Simple->new(<$fh>);
+               };
 
                # gmane rewrites Received headers, which increases spamminess
                my @h = $s->header("Original-Received");
@@ -31,6 +41,9 @@ foreach my $n (<$spool/*>) {
                        $s->header_set("Original-Received");
                }
 
+               # this is needed for "git rev-list --since=..." to work
+               local $ENV{GIT_COMMITTER_DATE} = $s->header('Date');
+
                # triggers for the SA HEADER_SPAM rule
                foreach my $drop (qw(Approved)) { $s->header_set($drop) }
 
@@ -45,7 +58,4 @@ foreach my $n (<$spool/*>) {
        } else {
                warn "Failed to open $n: $!\n";
        }
-       $pm->finish;
 }
-
-$pm->wait_all_children;