my $lss = PublicInbox::LeiSavedSearch->up($lei, $out) or return;
my $f = $lss->{'-f'};
my $mset_opt = $lei->{mset_opt} = { relevance => -2 };
- my $q = $mset_opt->{q_raw} = $lss->{-cfg}->{'lei.q'} //
+ my $q = $lss->{-cfg}->get_all('lei.q') //
die("lei.q unset in $f (out=$out)\n");
my $lse = $lei->{lse} // die 'BUG: {lse} missing';
- if (ref($q)) {
- $mset_opt->{qstr} = $lse->query_argv_to_string($lse->git, $q);
+ my $rawstr = $lss->{-cfg}->{'lei.internal.rawstr'} //
+ (scalar(@$q) == 1 && substr($q->[0], -1) eq "\n");
+ if ($rawstr) {
+ scalar(@$q) > 1 and
+ die "$f: lei.q has multiple values (@$q) (out=$out)\n";
+ $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q->[0]);
} else {
- $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q);
+ $mset_opt->{qstr} = $lse->query_argv_to_string($lse->git, $q);
}
# n.b. only a few CLI args are accepted for "up", so //= usually sets
for my $k ($lss->ARRAY_FIELDS) {
}
}
+sub filter_lss {
+ my ($self, $lei, $all) = @_;
+ my @outs = PublicInbox::LeiSavedSearch::list($lei);
+ if ($all eq 'local') {
+ $self->{o_local} = [ grep(!/$REMOTE_RE/, @outs) ];
+ } elsif ($all eq 'remote') {
+ $self->{o_remote} = [ grep(/$REMOTE_RE/, @outs) ];
+ } elsif ($all eq '') {
+ $self->{o_remote} = [ grep(/$REMOTE_RE/, @outs) ];
+ $self->{o_local} = [ grep(!/$REMOTE_RE/, @outs) ];
+ } else {
+ undef;
+ }
+}
+
sub lei_up {
my ($lei, @outs) = @_;
my $opt = $lei->{opt};
return $lei->fail("--all and @outs incompatible") if @outs;
defined($opt->{mua}) and return
$lei->fail('--all and --mua= are incompatible');
- @outs = PublicInbox::LeiSavedSearch::list($lei);
- if ($all eq 'local') {
- $self->{o_local} = [ grep(!/$REMOTE_RE/, @outs) ];
- } elsif ($all eq 'remote') {
- $self->{o_remote} = [ grep(/$REMOTE_RE/, @outs) ];
- } elsif ($all eq '') {
- $self->{o_remote} = [ grep(/$REMOTE_RE/, @outs) ];
- $self->{o_local} = [ grep(!/$REMOTE_RE/, @outs) ];
- } else {
+ filter_lss($self, $lei, $all) // return
$lei->fail("only --all=$all not understood");
- }
} elsif ($lei->{lse}) { # redispatched
scalar(@outs) == 1 or die "BUG: lse set w/ >1 out[@outs]";
return up1($lei, $outs[0]);
if ($lei->{auth}) { # start auth worker
require PublicInbox::NetWriter;
bless $lei->{net}, 'PublicInbox::NetWriter';
- $lei->{auth}->op_merge(my $ops = {}, $self, $lei);
- (my $op_c, $ops) = $lei->workers_start($self, 1, $ops);
- $lei->{wq1} = $self;
- $lei->wait_wq_events($op_c, $ops);
+ $lei->wq1_start($self);
# net_merge_all_done will fire when auth is done
} else {
redispatch_all($self, $lei); # see below