From b0b13249a538fc6f9a4c109d15d51170e3dd8bdd Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 19 Jan 2021 09:34:35 +0000 Subject: 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. --- lib/PublicInbox/LeiOverview.pm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'lib/PublicInbox/LeiOverview.pm') 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); -- cgit v1.2.3-24-ge0c7