From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 484D21F9FF for ; Thu, 25 Feb 2021 10:11:07 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/4] lei import: use --in-format/-F for consistency Date: Thu, 25 Feb 2021 10:11:04 +0000 Message-Id: <20210225101106.12505-3-e@80x24.org> In-Reply-To: <20210225101106.12505-1-e@80x24.org> References: <20210225101106.12505-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Since we recommend $IN_FORMAT:$LOCATION, this is hopefully not intrusive (not that this is released software, yet). This is to be consistent with "lei convert" usage. We'll keep "-f" only for output formats, since that is used for "lei q" and "lei convert" for outputs --- Documentation/lei-import.pod | 2 +- lib/PublicInbox/LEI.pm | 8 ++++---- lib/PublicInbox/LeiConvert.pm | 4 ++-- lib/PublicInbox/LeiImport.pm | 7 +++---- t/lei-import.t | 12 ++++++------ t/lei_to_mail.t | 2 +- 6 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Documentation/lei-import.pod b/Documentation/lei-import.pod index 2051e6bc..ef20e2f6 100644 --- a/Documentation/lei-import.pod +++ b/Documentation/lei-import.pod @@ -22,7 +22,7 @@ TODO: Update when URL support is added. =over -=item -f MAIL_FORMAT, --format=MAIL_FORMAT +=item -F MAIL_FORMAT, --in-format=MAIL_FORMAT Message input format. Unless messages are given on C, using a format prefix with C is preferred. diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 50665b3e..8eb96e78 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -172,7 +172,7 @@ our %CMD = ( # sorted in order of importance/use: 'import' => [ 'LOCATION...|--stdin', 'one-time import/update from URL or filesystem', qw(stdin| offset=i recursive|r exclude=s include|I=s - format|f=s kw|keywords|flags! C=s@), + in-format|F=s kw|keywords|flags! C=s@), ], 'convert' => [ 'LOCATION...|--stdin', 'one-time conversion from URL or filesystem to another format', @@ -399,9 +399,9 @@ sub fail ($$;$) { undef; } -sub check_input_format ($;$$) { - my ($self, $files, $opt_key) = @_; - $opt_key //= 'format'; +sub check_input_format ($;$) { + my ($self, $files) = @_; + my $opt_key = 'in-format'; my $fmt = $self->{opt}->{$opt_key}; if (!$fmt) { my $err = $files ? "regular file(s):\n@$files" : '--stdin'; diff --git a/lib/PublicInbox/LeiConvert.pm b/lib/PublicInbox/LeiConvert.pm index 32aa2edb..45d42c9c 100644 --- a/lib/PublicInbox/LeiConvert.pm +++ b/lib/PublicInbox/LeiConvert.pm @@ -91,7 +91,7 @@ sub call { # the main "lei convert" method $opt->{augment} = 1 unless $ovv->{dst} eq '/dev/stdout'; if ($opt->{stdin}) { @inputs and return $lei->fail("--stdin and @inputs do not mix"); - $lei->check_input_format(undef, 'in-format') or return; + $lei->check_input_format(undef) or return; $self->{0} = $lei->{0}; } # e.g. Maildir:/home/user/Mail/ or imaps://example.com/INBOX @@ -123,7 +123,7 @@ sub call { # the main "lei convert" method elsif (-d _) { push @d, $input } else { return $lei->fail("Unable to handle $input") } } - if (@f) { $lei->check_input_format(\@f, 'in-format') or return } + if (@f) { $lei->check_input_format(\@f) or return } if (@d) { # TODO: check for MH vs Maildir, here require PublicInbox::MdirReader; } diff --git a/lib/PublicInbox/LeiImport.pm b/lib/PublicInbox/LeiImport.pm index 13e817d0..7f247b64 100644 --- a/lib/PublicInbox/LeiImport.pm +++ b/lib/PublicInbox/LeiImport.pm @@ -68,8 +68,7 @@ sub call { # the main "lei import" method $self->{0} = $lei->{0}; } - # TODO: do we need --format for non-stdin? - my $fmt = $lei->{opt}->{'format'}; + my $fmt = $lei->{opt}->{'in-format'}; # e.g. Maildir:/home/user/Mail/ or imaps://example.com/INBOX for my $input (@inputs) { my $input_path = $input; @@ -159,7 +158,7 @@ sub _import_net { # imap_each, nntp_each cb sub import_path_url { my ($self, $input) = @_; my $lei = $self->{lei}; - my $ifmt = lc($lei->{opt}->{'format'} // ''); + my $ifmt = lc($lei->{opt}->{'in-format'} // ''); # TODO auto-detect? if ($input =~ m!\Aimaps?://!i) { $lei->{net}->imap_each($input, \&_import_net, $lei->{sto}, @@ -191,7 +190,7 @@ EOM sub import_stdin { my ($self) = @_; my $lei = $self->{lei}; - _import_fh($lei, delete $self->{0}, '', $lei->{opt}->{'format'}); + _import_fh($lei, delete $self->{0}, '', $lei->{opt}->{'in-format'}); } no warnings 'once'; # the following works even when LeiAuth is lazy-loaded diff --git a/t/lei-import.t b/t/lei-import.t index fa4fc504..edb0cd20 100644 --- a/t/lei-import.t +++ b/t/lei-import.t @@ -3,13 +3,13 @@ # License: AGPL-3.0+ use strict; use v5.10.1; use PublicInbox::TestCommon; test_lei(sub { -ok(!lei(qw(import -f bogus), 't/plack-qp.eml'), 'fails with bogus format'); +ok(!lei(qw(import -F bogus), 't/plack-qp.eml'), 'fails with bogus format'); like($lei_err, qr/\bbogus unrecognized/, 'gave error message'); lei_ok(qw(q s:boolean), \'search miss before import'); unlike($lei_out, qr/boolean/i, 'no results, yet'); open my $fh, '<', 't/data/0001.patch' or BAIL_OUT $!; -lei_ok([qw(import -f eml -)], undef, { %$lei_opt, 0 => $fh }, +lei_ok([qw(import -F eml -)], undef, { %$lei_opt, 0 => $fh }, \'import single file from stdin') or diag $lei_err; close $fh; lei_ok(qw(q s:boolean), \'search hit after import'); @@ -26,7 +26,7 @@ lei_ok(qw(q s:boolean -f mboxrd), \'blob accessible after import'); }); is_deeply(\@cmp, $expect, 'got expected message in mboxrd'); } -lei_ok(qw(import -f eml), 't/data/message_embed.eml', +lei_ok(qw(import -F eml), 't/data/message_embed.eml', \'import single file by path'); my $str = <<''; @@ -35,7 +35,7 @@ Message-ID: Status: RO my $opt = { %$lei_opt, 0 => \$str }; -lei_ok([qw(import -f eml -)], undef, $opt, +lei_ok([qw(import -F eml -)], undef, $opt, \'import single file with keywords from stdin'); lei_ok(qw(q m:x@y)); my $res = json_utf8->decode($lei_out); @@ -43,13 +43,13 @@ is($res->[1], undef, 'only one result'); is_deeply($res->[0]->{kw}, ['seen'], "message `seen' keyword set"); $str =~ tr/x/v/; # v@y -lei_ok([qw(import --no-kw -f eml -)], undef, $opt, +lei_ok([qw(import --no-kw -F eml -)], undef, $opt, \'import single file with --no-kw from stdin'); lei(qw(q m:v@y)); $res = json_utf8->decode($lei_out); is($res->[1], undef, 'only one result'); is_deeply($res->[0]->{kw}, [], 'no keywords set'); -# see t/lei_to_mail.t for "import -f mbox*" +# see t/lei_to_mail.t for "import -F mbox*" }); done_testing; diff --git a/t/lei_to_mail.t b/t/lei_to_mail.t index 72b90700..7898cc48 100644 --- a/t/lei_to_mail.t +++ b/t/lei_to_mail.t @@ -130,7 +130,7 @@ my $orig = do { }; test_lei(sub { - ok(lei(qw(import -f), $mbox, $fn), 'imported mbox'); + ok(lei(qw(import -F), $mbox, $fn), 'imported mbox'); ok(lei(qw(q s:x)), 'lei q works') or diag $lei_err; my $res = json_utf8->decode($lei_out); my $x = $res->[0];