From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id BC3E21FA1A for ; Fri, 16 Apr 2021 23:10:36 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 9/9] lei q --save: clobber config file on repeats Date: Fri, 16 Apr 2021 16:10:35 -0700 Message-Id: <20210416231035.31807-10-e@80x24.org> In-Reply-To: <20210416231035.31807-1-e@80x24.org> References: <20210416231035.31807-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: A user may wish to clobber/refine existing search parameters by issuing "lei q --save" again. Support that by overwriting the lei.saved-search state file entirely. We continue to preserve over.sqlite3 for deduplication purposes. This way, we don't get something redundant like: [lei] q = term1 q = term2 q = term1 q = term2 q = term3 ...whenever a user wants to refine their search. Instead, we'll just have: [lei] q = term1 q = term2 q = term3 On the second go. --- lib/PublicInbox/Config.pm | 9 +++++++++ lib/PublicInbox/LeiSavedSearch.pm | 10 +++++++++- lib/PublicInbox/Reply.pm | 10 ++-------- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index 26ac298e..603dad98 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -559,4 +559,13 @@ sub json { }; } +sub squote_maybe ($) { + my ($val) = @_; + if ($val =~ m{([^\w@\./,\%\+\-])}) { + $val =~ s/(['!])/'\\$1'/g; # '!' for csh + return "'$val'"; + } + $val; +} + 1; diff --git a/lib/PublicInbox/LeiSavedSearch.pm b/lib/PublicInbox/LeiSavedSearch.pm index a8bf470b..932b2aa4 100644 --- a/lib/PublicInbox/LeiSavedSearch.pm +++ b/lib/PublicInbox/LeiSavedSearch.pm @@ -13,6 +13,8 @@ use PublicInbox::Spawn qw(run_die); use PublicInbox::ContentHash qw(git_sha); use Digest::SHA qw(sha256_hex); +*squote_maybe = \&PublicInbox::Config::squote_maybe; + sub lss_dir_for ($$) { my ($lei, $dstref) = @_; my @n; @@ -44,7 +46,13 @@ sub new { require File::Path; File::Path::make_path($dir); # raises on error $self->{-cfg} = {}; - $self->{'-f'} = "$dir/lei.saved-search"; + my $f = $self->{'-f'} = "$dir/lei.saved-search"; + open my $fh, '>', $f or return $lei->fail("open $f: $!"); + my $sq_dst = squote_maybe($dst); + print $fh <fail("print $f: $!"); +; to refresh with new results, run: lei up $sq_dst +EOM + close $fh or return $lei->fail("close $f: $!"); my $q = $lei->{mset_opt}->{q_raw} // die 'BUG: {q_raw} missing'; if (ref $q) { cfg_set($self, '--add', 'lei.q', $_) for @$q; diff --git a/lib/PublicInbox/Reply.pm b/lib/PublicInbox/Reply.pm index 2a1066d2..79dd46a7 100644 --- a/lib/PublicInbox/Reply.pm +++ b/lib/PublicInbox/Reply.pm @@ -9,15 +9,9 @@ use URI::Escape qw/uri_escape_utf8/; use PublicInbox::Hval qw(ascii_html obfuscate_addrs mid_href); use PublicInbox::Address; use PublicInbox::MID qw(mid_clean); +use PublicInbox::Config; -sub squote_maybe ($) { - my ($val) = @_; - if ($val =~ m{([^\w@\./,\%\+\-])}) { - $val =~ s/(['!])/'\\$1'/g; # '!' for csh - return "'$val'"; - } - $val; -} +*squote_maybe = \&PublicInbox::Config::squote_maybe; sub add_addrs { my ($to, $cc, @addrs) = @_;