]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiToMail.pm
lei up: automatically use dt: for remote externals
[public-inbox.git] / lib / PublicInbox / LeiToMail.pm
index 1221d3c77e1f6a7d521017d7414a44780763bf78..9f7171fb04bbc89110fa7d6eedde534c6419e426 100644 (file)
@@ -361,6 +361,7 @@ sub _v2_write_cb ($$) {
                $eml //= PublicInbox::Eml->new($bref);
                return if $dedupe && $dedupe->is_dup($eml, $smsg);
                $lei->{v2w}->ipc_do('add', $eml); # V2Writable->add
+               ++$lei->{-nr_write};
        }
 }
 
@@ -396,7 +397,8 @@ sub new {
        } elsif ($fmt =~ /\Aimaps?\z/) {
                require PublicInbox::NetWriter;
                require PublicInbox::URIimap;
-               my $net = PublicInbox::NetWriter->new;
+               # {net} may exist from "lei up" for auth
+               my $net = $lei->{net} // PublicInbox::NetWriter->new;
                $net->{quiet} = $lei->{opt}->{quiet};
                my $uri = PublicInbox::URIimap->new($dst)->canonical;
                $net->add_url($$uri);
@@ -408,9 +410,9 @@ sub new {
                $lei->{net} = $net;
                $self->{base_type} = 'imap';
                $lei->{opt}->{save} //= \1 if $lei->{cmd} eq 'q';
-       } elsif ($fmt eq 'text') {
+       } elsif ($fmt eq 'text' || $fmt eq 'reply') {
                require PublicInbox::LeiViewText;
-               $lei->{lvt} = PublicInbox::LeiViewText->new($lei);
+               $lei->{lvt} = PublicInbox::LeiViewText->new($lei, $fmt);
                $self->{base_type} = 'text';
                @conflict = qw(mua save);
        } elsif ($fmt eq 'v2') {
@@ -435,7 +437,9 @@ sub new {
                        ($lei->{opt}->{save} ? 'LeiSavedSearch' : 'LeiDedupe');
                eval "require $dd_cls";
                die "$dd_cls: $@" if $@;
-               $dd_cls->new($lei);
+               my $dd = $dd_cls->new($lei);
+               $lei->{lss} //= $dd if $dd && $dd->can('cfg_set');
+               $dd;
        };
        $self;
 }
@@ -456,8 +460,10 @@ sub _pre_augment_maildir {
 
 sub clobber_dst_prepare ($;$) {
        my ($lei, $f) = @_;
-       my $wait = (defined($f) && $lei->{sto}) ?
-                       $lei->{sto}->ipc_do('lms_forget_folders', $f) : undef;
+       if (my $lms = defined($f) ? $lei->lms : undef) {
+               $lms->lms_write_prepare;
+               $lms->forget_folders($f);
+       }
        my $dedupe = $lei->{dedupe} or return;
        $dedupe->reset_dedupe if $dedupe->can('reset_dedupe');
 }
@@ -783,6 +789,4 @@ sub net_merge_all_done {
        $self->wq_close(1);
 }
 
-no warnings 'once'; # the following works even when LeiAuth is lazy-loaded
-*net_merge_all = \&PublicInbox::LeiAuth::net_merge_all;
 1;