diff options
Diffstat (limited to 'lib/PublicInbox/LeiRm.pm')
-rw-r--r-- | lib/PublicInbox/LeiRm.pm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/PublicInbox/LeiRm.pm b/lib/PublicInbox/LeiRm.pm new file mode 100644 index 00000000..00b12485 --- /dev/null +++ b/lib/PublicInbox/LeiRm.pm @@ -0,0 +1,30 @@ +# Copyright (C) 2021 all contributors <meta@public-inbox.org> +# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> + +# implements the "lei rm" command, you can point this at +# an entire spam mailbox or read a message from stdin +package PublicInbox::LeiRm; +use strict; +use v5.10.1; +use parent qw(PublicInbox::IPC PublicInbox::LeiInput); + +sub input_eml_cb { # used by PublicInbox::LeiInput::input_fh + my ($self, $eml) = @_; + $self->{lei}->{sto}->wq_do('remove_eml', $eml); +} + +sub lei_rm { + my ($lei, @inputs) = @_; + $lei->_lei_store(1)->write_prepare($lei); + $lei->{opt}->{'in-format'} //= 'eml' if $lei->{opt}->{stdin}; + my $self = bless {}, __PACKAGE__; + $self->prepare_inputs($lei, \@inputs) or return; + $lei->{-err_type} = 'non-fatal'; + $lei->wq1_start($self); +} + +no warnings 'once'; +*ipc_atfork_child = \&PublicInbox::LeiInput::input_only_atfork_child; +*net_merge_all_done = \&PublicInbox::LeiInput::input_only_net_merge_all_done; + +1; |