]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiLcat.pm
lei lcat: allow IMAP folder URLs w/o UIDVALIDITY
[public-inbox.git] / lib / PublicInbox / LeiLcat.pm
index effc36828e0000bab29d7d67a3e6d191ec1d3761..5bd20c1fb09bdbdfca05f475150c0aeadc1fe9fe 100644 (file)
@@ -24,7 +24,17 @@ sub lcat_imap_uri ($$) {
        } elsif (defined(my $fid = $lms->fid_for($$uri))) {
                push @{$lei->{lcat_fid}}, $fid;
        } else {
-               $lei->child_error(1 << 8, "# unknown folder: $uri");
+               my $folders = [ $$uri ];
+               my $err = $lms->arg2folder($lei, $folders);
+               $lei->qerr(@{$err->{qerr}}) if $err && $err->{qerr};
+               if ($err && $err->{fail}) {
+                       $lei->child_error(1 << 8, "# unknown folder: $uri");
+               } else {
+                       for my $f (@$folders) {
+                               my $fid = $lms->fid_for($f);
+                               push @{$lei->{lcat_fid}}, $fid;
+                       }
+               }
        }
 }
 
@@ -132,4 +142,12 @@ no args allowed on command-line with --stdin
        $lei->_start_query;
 }
 
+sub _complete_lcat {
+       my ($lei, @argv) = @_;
+       my $sto = $lei->_lei_store or return;
+       my $lms = $sto->search->lms or return;
+       my $match_cb = $lei->complete_url_prepare(\@argv);
+       grep(m!\A[a-z]+://!, map { $match_cb->($_) } $lms->folders);
+}
+
 1;