]> Sergey Matveev's repositories - public-inbox.git/blob - lib/PublicInbox/LeiForgetSearch.pm
0db9c75b8be3b2ae0c30d149d5c47b5c7c244098
[public-inbox.git] / lib / PublicInbox / LeiForgetSearch.pm
1 # Copyright (C) 2021 all contributors <meta@public-inbox.org>
2 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
3
4 # "lei forget-search" forget/remove a saved search "lei q --save"
5 package PublicInbox::LeiForgetSearch;
6 use strict;
7 use v5.10.1;
8 use PublicInbox::LeiSavedSearch;
9 use PublicInbox::LeiUp;
10 use File::Path ();
11 use SelectSaver;
12
13 sub lei_forget_search {
14         my ($lei, @outs) = @_;
15         my @dirs; # paths in ~/.local/share/lei/saved-search/
16         my $cwd;
17         for my $o (@outs) {
18                 my $d = PublicInbox::LeiSavedSearch::lss_dir_for($lei, \$o, 1);
19                 if (-e $d) {
20                         push @dirs, $d
21                 } else { # keep going, like rm(1):
22                         $cwd //= $lei->rel2abs('.');
23                         warn "--save was not used with $o cwd=$cwd\n";
24                 }
25         }
26         my $save;
27         my $opt = { safe => 1 };
28         if ($lei->{opt}->{verbose}) {
29                 $opt->{verbose} = 1;
30                 $save = SelectSaver->new($lei->{2});
31         }
32         File::Path::remove_tree(@dirs, $opt);
33         $lei->fail if defined $cwd;
34 }
35
36 *_complete_forget_search = \&PublicInbox::LeiUp::_complete_up;
37
38 1;