X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiUp.pm;h=79639d5e62a49fe8f2eb43bfd3f454483e619e4f;hb=6f8e16a266b30819ff74c40bc532f8c3f4a9f4b7;hp=dac0fc28788510d98894d05af6c213479202da07;hpb=70a3ebbe4f277938d2a129c661a22b93b5f24d80;p=public-inbox.git diff --git a/lib/PublicInbox/LeiUp.pm b/lib/PublicInbox/LeiUp.pm index dac0fc28..79639d5e 100644 --- a/lib/PublicInbox/LeiUp.pm +++ b/lib/PublicInbox/LeiUp.pm @@ -93,6 +93,21 @@ sub redispatch_all ($$) { } } +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}; @@ -101,17 +116,8 @@ sub lei_up { 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]);