]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LeiQuery.pm
lei q: honor --no-local to force remote searches
[public-inbox.git] / lib / PublicInbox / LeiQuery.pm
index acab3c2c65ca98801aa3cfccb47d66107da6c19b..953d1fc22076f4ac77069d1c0769bf7a2107e34d 100644 (file)
@@ -24,9 +24,18 @@ sub lei_q {
        # --external is enabled by default, but allow --no-external
        if ($opt->{external} //= 1) {
                my $cb = $lxs->can('prepare_external');
-               $self->_externals_each($cb, $lxs);
+               my $ne = $self->_externals_each($cb, $lxs);
+               $opt->{remote} //= $ne == $lxs->remotes;
+               if ($opt->{'local'}) {
+                       delete($lxs->{remotes}) if !$opt->{remote};
+               } else {
+                       delete($lxs->{locals});
+               }
+       }
+       unless ($lxs->locals || $lxs->remotes) {
+               return $self->fail('no local or remote inboxes to search');
        }
-       my $xj = $opt->{thread} ? $lxs->locals : ($lxs->remotes + 1);
+       my $xj = $lxs->concurrency($opt);
        my $ovv = PublicInbox::LeiOverview->new($self) or return;
        $self->atfork_prepare_wq($lxs);
        $lxs->wq_workers_start('lei_xsearch', $xj, $self->oldset);