about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-04-16 16:10:35 -0700
committerEric Wong <e@80x24.org>2021-04-17 10:00:45 +0000
commit74c0a24d49855321883f23decd687a1a866df24e (patch)
treed832b2e99a364b98f258f845c29aa60c33e1492d
parent1e51bc86dcdc25363575f6e9b35d954c65dec795 (diff)
downloadpublic-inbox-74c0a24d49855321883f23decd687a1a866df24e.tar.gz
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.
-rw-r--r--lib/PublicInbox/Config.pm9
-rw-r--r--lib/PublicInbox/LeiSavedSearch.pm10
-rw-r--r--lib/PublicInbox/Reply.pm10
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 <<EOM or return $lei->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) = @_;