X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FLeiTag.pm;h=2dc59f7023cac20d158a90880b8aa7d22c6620c8;hb=0054246c2d03fcc91bc899da5ef41a68f505e542;hp=44d77b881c04136c1f190e3e166298e100fd101c;hpb=9cf83074ce8b46254ef6639d87e4e64372cc552b;p=public-inbox.git diff --git a/lib/PublicInbox/LeiTag.pm b/lib/PublicInbox/LeiTag.pm index 44d77b88..2dc59f70 100644 --- a/lib/PublicInbox/LeiTag.pm +++ b/lib/PublicInbox/LeiTag.pm @@ -12,30 +12,19 @@ sub input_eml_cb { # used by PublicInbox::LeiInput::input_fh my ($self, $eml) = @_; if (my $xoids = $self->{lse}->xoids_for($eml) // # tries LeiMailSync $self->{lei}->{ale}->xoids_for($eml)) { - $self->{lei}->{sto}->ipc_do('update_xvmd', $xoids, $eml, + $self->{lei}->{sto}->wq_do('update_xvmd', $xoids, $eml, $self->{vmd_mod}); } else { ++$self->{unimported}; } } -sub input_mbox_cb { - my ($eml, $self) = @_; - $eml->header_set($_) for (qw(X-Status Status)); - input_eml_cb($self, $eml); -} - sub pmdir_cb { # called via wq_io_do from LeiPmdir->each_mdir_fn my ($self, $f) = @_; my $eml = eml_from_path($f) or return; input_eml_cb($self, $eml); } -sub input_net_cb { # imap_each, nntp_each cb - my ($url, $uid, $kw, $eml, $self) = @_; - input_eml_cb($self, $eml); -} - sub lei_tag { # the "lei tag" method my ($lei, @argv) = @_; my $sto = $lei->_lei_store(1); @@ -48,14 +37,8 @@ sub lei_tag { # the "lei tag" method $self->prepare_inputs($lei, \@argv) or return; grep(defined, @$vmd_mod{qw(+kw +L -L -kw)}) or return $lei->fail('no keywords or labels specified'); - my $ops = {}; - $lei->{auth}->op_merge($ops, $self) if $lei->{auth}; - my $j = $self->{-wq_nr_workers} = 1; # locked for now - (my $op_c, $ops) = $lei->workers_start($self, $j, $ops); - $lei->{wq1} = $self; $lei->{-err_type} = 'non-fatal'; - net_merge_all_done($self) unless $lei->{auth}; - $lei->wait_wq_events($op_c, $ops); + $lei->wq1_start($self); } sub note_unimported { @@ -75,7 +58,7 @@ sub ipc_atfork_child { # Workaround bash word-splitting s to ['kw', ':', 'keyword' ...] # Maybe there's a better way to go about this in # contrib/completion/lei-completion.bash -sub _complete_mark_common ($) { +sub _complete_tag_common ($) { my ($argv) = @_; # Workaround bash word-splitting URLs to ['https', ':', '//' ...] # Maybe there's a better way to go about this in @@ -105,16 +88,18 @@ sub _complete_mark_common ($) { # FIXME: same problems as _complete_forget_external and similar sub _complete_tag { my ($self, @argv) = @_; + require PublicInbox::LeiImport; + my @in = PublicInbox::LeiImport::_complete_import(@_); my @L = eval { $self->_lei_store->search->all_terms('L') }; - my @all = ((map { ("+kw:$_", "-kw:$_") } @PublicInbox::LeiInput::KW), + my @kwL = ((map { ("+kw:$_", "-kw:$_") } @PublicInbox::LeiInput::KW), (map { ("+L:$_", "-L:$_") } @L)); - return @all if !@argv; - my ($cur, $re) = _complete_mark_common(\@argv); - map { + my ($cur, $re) = _complete_tag_common(\@argv); + my @m = map { # only return the part specified on the CLI # don't duplicate if already 100% completed /\A$re(\Q$cur\E.*)/ ? ($cur eq $1 ? () : $1) : (); - } grep(/$re\Q$cur/, @all); + } grep(/$re\Q$cur/, @kwL); + (@in, (@m ? @m : @kwL)); } no warnings 'once'; # the following works even when LeiAuth is lazy-loaded