diff options
Diffstat (limited to 'lib/PublicInbox/LeiLsMailSource.pm')
-rw-r--r-- | lib/PublicInbox/LeiLsMailSource.pm | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/PublicInbox/LeiLsMailSource.pm b/lib/PublicInbox/LeiLsMailSource.pm index 1db15d57..ab6c1e60 100644 --- a/lib/PublicInbox/LeiLsMailSource.pm +++ b/lib/PublicInbox/LeiLsMailSource.pm @@ -19,7 +19,8 @@ sub input_path_url { # overrides LeiInput version if ($url =~ m!\Aimaps?://!i) { my $uri = PublicInbox::URIimap->new($url); my $sec = $lei->{net}->can('uri_section')->($uri); - my $mic = $lei->{net}->mic_get($uri); + my $mic = $lei->{net}->mic_get($uri) or + return $lei->err("E: $uri"); my $l = $mic->folders_hash($uri->path); # server-side filter @$l = map { $_->[2] } # undo Schwartzian transform below: sort { $a->[0] cmp $b->[0] || $a->[1] <=> $b->[1] } @@ -39,8 +40,13 @@ sub input_path_url { # overrides LeiInput version } } elsif ($url =~ m!\A(?:nntps?|s?news)://!i) { my $uri = PublicInbox::URInntps->new($url); - my $nn = $lei->{net}->nn_get($uri); - my $l = $nn->newsgroups($uri->group); # name => description + my $nn = $lei->{net}->nn_get($uri) or + return $lei->err("E: $uri"); + # $l = name => description + my $l = $nn->newsgroups($uri->group) // return $lei->err(<<EOM); +E: $uri LIST NEWSGROUPS: ${\($lei->{net}->ndump($nn->message))} +E: login may be required, try adding `-c nntp.debug' to your command +EOM my $sec = $lei->{net}->can('uri_section')->($uri); if ($json) { my $all = $nn->list; @@ -95,23 +101,18 @@ sub lei_ls_mail_source { $json->pretty(1)->indent(2) if $isatty || $lei->{opt}->{pretty}; } $lei->start_pager if $isatty; - my $ops = {}; - $lei->{auth}->op_merge($ops, $self); - (my $op_c, $ops) = $lei->workers_start($self, 1, $ops); - $lei->{wq1} = $self; $lei->{-err_type} = 'non-fatal'; - net_merge_all_done($self) unless $lei->{auth}; - $lei->wait_wq_events($op_c, $ops); # net_merge_all_done if !{auth} + $lei->wq1_start($self); } sub _complete_ls_mail_source { my ($lei, @argv) = @_; my $match_cb = $lei->complete_url_prepare(\@argv); - my @k = $lei->url_folder_cache->keys($argv[-1], 1); + my @k = $lei->url_folder_cache->keys($argv[-1] // undef, 1); my @m = map { $match_cb->($_) } @k; my %f = map { $_ => 1 } (@m ? @m : @k); if (my $lms = $lei->lms) { - @k = $lms->folders($argv[-1], 1); + @k = $lms->folders($argv[-1] // undef, 1); @m = map { $match_cb->($_) } grep(m!\A[a-z]+://!, @k); if (@m) { @f{@m} = @m } else { @f{@k} = @k } } |