]> Sergey Matveev's repositories - public-inbox.git/blob - scripts/import_vger_from_mbox
c33e42e45c2823e1e87e9a2139fea60efc132468
[public-inbox.git] / scripts / import_vger_from_mbox
1 #!/usr/bin/perl -w
2 # Copyright (C) 2016-2021 all contributors <meta@public-inbox.org>
3 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
4 use strict;
5 use warnings;
6 use Getopt::Long qw/:config gnu_getopt no_ignore_case auto_abbrev/;
7 use PublicInbox::InboxWritable;
8 my $usage = "usage: $0 NAME EMAIL DIR <MBOX\n";
9 my $dry_run;
10 my $version = 2;
11 my $variant = 'mboxrd';
12 my $filter = 'PublicInbox::Filter::Vger';
13 my %opts = (
14         'n|dry-run' => \$dry_run,
15         'V|version=i' => \$version,
16         'F|format=s' => \$variant,
17         'filter=s' => \$filter,
18 );
19 GetOptions(%opts) or die $usage;
20 if ($variant ne 'mboxrd' && $variant ne 'mboxo') {
21         die "Unsupported mbox variant: $variant\n";
22 }
23 my $name = shift or die $usage; # git
24 my $email = shift or die $usage; # git@vger.kernel.org
25 my $inboxdir = shift or die $usage; # /path/to/v2/repo
26 my $ibx = {
27         inboxdir => $inboxdir,
28         name => $name,
29         version => $version,
30         address => [ $email ],
31         filter => $filter,
32 };
33 $ibx = PublicInbox::Inbox->new($ibx);
34 unless ($dry_run) {
35         if ($version >= 2) {
36                 require PublicInbox::V2Writable;
37                 PublicInbox::V2Writable->new($ibx, 1)->init_inbox(0);
38         } else {
39                 system(qw(git init --bare -q), $inboxdir) == 0 or die;
40         }
41 }
42 $ibx = PublicInbox::InboxWritable->new($ibx);
43 binmode STDIN;
44 $ibx->import_mbox(\*STDIN, $variant);