]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiExportKw.pm
lei export-kw: completion returns all Maildir+IMAP
[public-inbox.git] / lib / PublicInbox / LeiExportKw.pm
index ceeef7f21d54e41ab90a868ed5f1b93ffbea4b7d..5be9e51ff311c68e743d80480f9d12ef3d30c6e2 100644 (file)
@@ -67,9 +67,13 @@ sub input_path_url {
                $self->{lms}->each_src($input, \&export_kw_md, $self, $mdir);
        } elsif ($input =~ m!\Aimaps?://!i) {
                my $uri = PublicInbox::URIimap->new($input);
-               my $mic = $self->{nwr}->mic_for_folder($uri);
-               $self->{lms}->each_src($$uri, \&export_kw_imap, $self, $mic);
-               $mic->expunge;
+               if (my $mic = $self->{nwr}->mic_for_folder($uri)) {
+                       $self->{lms}->each_src($$uri, \&export_kw_imap,
+                                               $self, $mic);
+                       $mic->expunge;
+               } else {
+                       $self->{lei}->child_error(0, "$input unavailable: $@");
+               }
        } else { die "BUG: $input not supported" }
 }
 
@@ -108,6 +112,7 @@ EOM
                $self->{nwr} = bless $net, 'PublicInbox::NetWriter';
                $self->{imap_mod_kw} = $net->can($self->{-merge_kw} ?
                                        'imap_add_kw' : 'imap_set_kw');
+               $self->{nwr}->{-skip_creat} = 1;
        }
        my $ops = {};
        $lei->{auth}->op_merge($ops, $self) if $lei->{auth};
@@ -123,7 +128,7 @@ sub _complete_export_kw {
        my $lms = $lei->lms or return ();
        my $match_cb = $lei->complete_url_prepare(\@argv);
        # filter-out read-only sources:
-       my @k = grep(!m!(?://;AUTH=ANONYMOUS\@|\A(?:nntps?|s?news)://)!,
+       my @k = grep(m!(?:maildir|imaps?):!,
                        $lms->folders($argv[-1] // undef, 1));
        my @m = map { $match_cb->($_) } @k;
        @m ? @m : @k;