]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiConvert.pm
www: improve visibility of coderepos
[public-inbox.git] / lib / PublicInbox / LeiConvert.pm
index 32aa2edb0079fbc47f83e8d9c44d4d9313a1446a..fcc67f0bfe25ea3d2b72fee28e593cb1a3da3a6d 100644 (file)
@@ -7,15 +7,14 @@ use strict;
 use v5.10.1;
 use parent qw(PublicInbox::IPC);
 use PublicInbox::Eml;
-use PublicInbox::InboxWritable qw(eml_from_path);
 use PublicInbox::LeiStore;
 use PublicInbox::LeiOverview;
 
 sub mbox_cb {
        my ($eml, $self) = @_;
-       my @kw = PublicInbox::LeiStore::mbox_keywords($eml);
+       my $kw = PublicInbox::MboxReader::mbox_keywords($eml);
        $eml->header_set($_) for qw(Status X-Status);
-       $self->{wcb}->(undef, { kw => \@kw }, $eml);
+       $self->{wcb}->(undef, { kw => $kw }, $eml);
 }
 
 sub net_cb { # callback for ->imap_each, ->nntp_each
@@ -24,7 +23,7 @@ sub net_cb { # callback for ->imap_each, ->nntp_each
 }
 
 sub mdir_cb {
-       my ($kw, $eml, $self) = @_;
+       my ($f, $kw, $eml, $self) = @_;
        $self->{wcb}->(undef, { kw => $kw }, $eml);
 }
 
@@ -62,9 +61,11 @@ sub do_convert { # via wq_do
                        $ifmt = lc $1;
                }
                if (-f $input) {
-                       open my $fh, '<', $input or
-                                       return $lei->fail("open $input: $!");
-                       convert_fh($self, $ifmt, $fh, $input);
+                       my $m = $lei->{opt}->{'lock'} //
+                                       ($ifmt eq 'eml' ? ['none'] :
+                                       PublicInbox::MboxLock->defaults);
+                       my $mbl = PublicInbox::MboxLock->acq($input, 0, $m);
+                       convert_fh($self, $ifmt, $mbl->{fh}, $input);
                } elsif (-d _) {
                        PublicInbox::MdirReader::maildir_each_eml($input,
                                                        \&mdir_cb, $self);
@@ -91,7 +92,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
@@ -109,6 +110,7 @@ sub call { # the main "lei convert" method
 
                        }
                        if (-f $input_path) {
+                               require PublicInbox::MboxLock;
                                require PublicInbox::MboxReader;
                                PublicInbox::MboxReader->can($ifmt) or return
                                        $lei->fail("$ifmt not supported");
@@ -123,7 +125,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;
        }