From: Eric Wong Date: Tue, 19 Jan 2021 09:34:35 +0000 (+0000) Subject: lei_overview: start implementing format detection X-Git-Tag: v1.7.0~1342 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=b0b13249a538fc6f9a4c109d15d51170e3dd8bdd;p=public-inbox.git lei_overview: start implementing format detection We'll need it for IMAP support, at least. Proper mbox family detection will be expensive, so deal with it later. --- diff --git a/lib/PublicInbox/LeiOverview.pm b/lib/PublicInbox/LeiOverview.pm index a7021b03..dcc3088b 100644 --- a/lib/PublicInbox/LeiOverview.pm +++ b/lib/PublicInbox/LeiOverview.pm @@ -38,6 +38,21 @@ sub ovv_out_lk_cancel ($) { unlink(delete($self->{lock_path})); } +sub detect_fmt ($$) { + my ($lei, $dst) = @_; + if ($dst =~ m!\A([:/]+://)!) { + $lei->fail("$1 support not implemented, yet\n"); + } elsif (!-e $dst) { + 'maildir'; # the default + } elsif (-f _ || -p _) { + $lei->fail("unable to determine mbox family of $dst\n"); + } elsif (-d _) { # TODO: MH? + 'maildir'; + } else { + $lei->fail("unable to determine format of $dst\n"); + } +} + sub new { my ($class, $lei) = @_; my $opt = $lei->{opt}; @@ -54,7 +69,7 @@ sub new { } $fmt //= 'json' if $dst eq '/dev/stdout'; - $fmt //= 'maildir'; + $fmt //= detect_fmt($lei, $dst) or return; if (index($dst, '://') < 0) { # not a URL, so assume path $dst = File::Spec->canonpath($dst); diff --git a/t/lei.t b/t/lei.t index 8bb4e439..64cb5f0e 100644 --- a/t/lei.t +++ b/t/lei.t @@ -232,6 +232,8 @@ my $test_external = sub { my @res = $cat->(); is_deeply(\@res, [], "clobber w/o --augment $sfx"); } + ok(!$lei->('q', '-o', "$home/mbox", 's:nope'), + 'fails if mbox format unspecified'); }; my $test_lei_common = sub {