From: Eric Wong <e@80x24.org> To: meta@public-inbox.org Subject: [PATCH 3/4] lei_query: hoist out lxs_prepare Date: Sat, 27 Mar 2021 11:45:50 +0000 [thread overview] Message-ID: <20210327114551.3607-4-e@80x24.org> (raw) In-Reply-To: <20210327114551.3607-1-e@80x24.org> We'll be reusing it for "lei blob", as it makes sense to keep handling of --only, --include, etc. switches consistent. --- lib/PublicInbox/LeiQuery.pm | 38 +++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm index 65aa9e87..5376c7f8 100644 --- a/lib/PublicInbox/LeiQuery.pm +++ b/lib/PublicInbox/LeiQuery.pm @@ -35,23 +35,19 @@ sub qstr_add { # PublicInbox::InputPipe::consume callback for --stdin } } -# the main "lei q SEARCH_TERMS" method -sub lei_q { - my ($self, @argv) = @_; +sub lxs_prepare { + my ($self) = @_; require PublicInbox::LeiXSearch; - require PublicInbox::LeiOverview; - require PublicInbox::V2Writable; - PublicInbox::Config->json; # preload before forking - my $opt = $self->{opt}; # prepare any number of LeiXSearch || LeiSearch || Inbox || URL my $lxs = $self->{lxs} = PublicInbox::LeiXSearch->new; + my $opt = $self->{opt}; my @only = @{$opt->{only} // []}; # --local is enabled by default unless --only is used # we'll allow "--only $LOCATION --local" - my $sto = $self->_lei_store(1); - my $lse = $self->{lse} = $sto->search; + my $sto = $self->_lei_store(1); # FIXME: should not create + $self->{lse} = $sto->search; if ($opt->{'local'} //= scalar(@only) ? 0 : 1) { - $lxs->prepare_external($lse); + $lxs->prepare_external($self->{lse}); } if (@only) { for my $loc (@only) { @@ -82,10 +78,20 @@ sub lei_q { } } } - unless ($lxs->locals || $lxs->remotes) { - return $self->fail('no local or remote inboxes to search'); - } + ($lxs->locals || $lxs->remotes) ? ($self->{lxs} = $lxs) : + $self->fail('no local or remote inboxes to search'); +} + +# the main "lei q SEARCH_TERMS" method +sub lei_q { + my ($self, @argv) = @_; + require PublicInbox::LeiOverview; + require PublicInbox::V2Writable; + PublicInbox::Config->json; # preload before forking + PublicInbox::LeiOverview->new($self) or return; + my $lxs = lxs_prepare($self) or return; $self->ale->refresh_externals($lxs); + my $opt = $self->{opt}; my ($xj, $mj) = split(/,/, $opt->{jobs} // ''); if (defined($xj) && $xj ne '' && $xj !~ /\A[1-9][0-9]*\z/) { return $self->fail("`$xj' search jobs must be >= 1"); @@ -97,12 +103,11 @@ sub lei_q { if (defined($mj) && $mj !~ /\A[1-9][0-9]*\z/) { return $self->fail("`$mj' writer jobs must be >= 1"); } - PublicInbox::LeiOverview->new($self) or return; if ($self->{l2m} && ($opt->{'import-remote'} //= 1) | # we use \1 (a ref) to distinguish between # user-supplied and default value (($opt->{'import-before'} //= \1) ? 1 : 0)) { - $sto->write_prepare($self); + $self->_lei_store(1)->write_prepare($self); } $self->{l2m} and $self->{l2m}->{-wq_nr_workers} = $mj // do { $mj = POSIX::lround($nproc * 3 / 4); # keep some CPU for git @@ -135,7 +140,8 @@ no query allowed on command-line with --stdin PublicInbox::InputPipe::consume($self->{0}, \&qstr_add, $self); return; } - $mset_opt{qstr} = $lse->query_argv_to_string($lse->git, \@argv); + $mset_opt{qstr} = + $self->{lse}->query_argv_to_string($self->{lse}->git, \@argv); _start_query($self); }
next prev parent reply other threads:[~2021-03-27 11:45 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-27 11:45 [PATCH 0/4] lei blob (formerly known as "lei show") Eric Wong 2021-03-27 11:45 ` [PATCH 1/4] lei_ale: do not create store unnecessarily Eric Wong 2021-03-27 11:45 ` [PATCH 2/4] lei help: move "lei help" into LeiHelp.pm Eric Wong 2021-03-27 11:45 ` Eric Wong [this message] 2021-03-27 11:45 ` [PATCH 4/4] lei blob: aka "git-show-harder" for blobs Eric Wong 2021-03-27 20:20 ` [SQUASH] lei blob: use absolute path Eric Wong
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://public-inbox.org/README * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210327114551.3607-4-e@80x24.org \ --to=e@80x24.org \ --cc=meta@public-inbox.org \ --subject='Re: [PATCH 3/4] lei_query: hoist out lxs_prepare' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://80x24.org/public-inbox.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).