X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=scripts%2Fimport_vger_from_mbox;h=6a00fae3fa5ff4414d9dbc2007400c09be606d70;hb=fe99e1e4900b5fbe8da4aef25bb0dd05eacb25a3;hp=c45dc4ee1a4986f38d15d96ba9cfe2d706d00019;hpb=ff25a60b1b85c92a7e76a735a2c79c0205233a27;p=public-inbox.git diff --git a/scripts/import_vger_from_mbox b/scripts/import_vger_from_mbox index c45dc4ee..6a00fae3 100644 --- a/scripts/import_vger_from_mbox +++ b/scripts/import_vger_from_mbox @@ -4,23 +4,43 @@ use strict; use warnings; use Getopt::Long qw/:config gnu_getopt no_ignore_case auto_abbrev/; -use Date::Parse qw/str2time/; -use Email::MIME; -$Email::MIME::ContentType::STRICT_PARAMS = 0; # user input is imperfect +use PublicInbox::MIME; +use PublicInbox::Inbox; use PublicInbox::V2Writable; +use PublicInbox::Import; my $usage = "usage: $0 NAME EMAIL DIR \$dry_run ); +my $version = 2; +my $variant = 'mboxrd'; +my %opts = ( + 'n|dry-run' => \$dry_run, + 'V|version=i' => \$version, + 'F|format=s' => \$variant, +); GetOptions(%opts) or die $usage; +if ($variant ne 'mboxrd' && $variant ne 'mboxo') { + die "Unsupported mbox variant: $variant\n"; +} my $name = shift or die $usage; # git my $email = shift or die $usage; # git@vger.kernel.org my $mainrepo = shift or die $usage; # /path/to/v2/repo -my $v2ibx = { +my $ibx = { mainrepo => $mainrepo, name => $name, + version => $version, -primary_address => $email, }; -my $im = $dry_run ? undef : PublicInbox::V2Writable->new($v2ibx, 1); +$ibx = PublicInbox::Inbox->new($ibx); +my $im; +unless ($dry_run) { + if ($version >= 2) { + $im = PublicInbox::V2Writable->new($ibx, 1); + } else { + system(qw(git init --bare -q), $mainrepo); + my $git = PublicInbox::Git->new($mainrepo); + $im = PublicInbox::Import->new($git, $name, $email, $ibx); + } +} binmode STDIN; my $msg = ''; use PublicInbox::Filter::Vger; @@ -29,12 +49,17 @@ my $vger = PublicInbox::Filter::Vger->new; sub do_add ($$) { my ($im, $msg) = @_; $$msg =~ s/(\r?\n)+\z/$1/s; - $msg = Email::MIME->new($$msg); - $msg = $vger->scrub($msg); + my $mime = PublicInbox::MIME->new($msg); + if ($variant eq 'mboxrd') { + $$msg =~ s/^>(>*From )/$1/sm; + } elsif ($variant eq 'mboxo') { + $$msg =~ s/^>From /From /sm; + } + $mime = $vger->scrub($mime); return unless $im; - $im->add($msg) or + $im->add($mime) or warn "duplicate: ", - $msg->header_obj->header_raw('Message-ID'), "\n"; + $mime->header_obj->header_raw('Message-ID'), "\n"; } # asctime: From example@example.com Fri Jun 23 02:56:55 2000