]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LEI.pm
lei q: support mbox locking by default
[public-inbox.git] / lib / PublicInbox / LEI.pm
index 28e5365ad6b8bf75d302b8472941e50561446187..b5bdda215008ebd95ba0bb49418e865112f1f44e 100644 (file)
@@ -27,7 +27,7 @@ use Time::HiRes qw(stat); # ctime comparisons for config cache
 use File::Path qw(mkpath);
 use File::Spec;
 our $quit = \&CORE::exit;
-our ($current_lei, $errors_log, $listener);
+our ($current_lei, $errors_log, $listener, $oldset);
 my ($recv_cmd, $send_cmd);
 my $GLP = Getopt::Long::Parser->new;
 $GLP->configure(qw(gnu_getopt no_ignore_case auto_abbrev));
@@ -109,9 +109,10 @@ sub index_opt {
 # command => [ positional_args, 1-line description, Getopt::Long option spec ]
 our %CMD = ( # sorted in order of importance/use:
 'q' => [ '--stdin|SEARCH_TERMS...', 'search for messages matching terms', qw(
-       save-as=s output|mfolder|o=s format|f=s dedupe|d=s threads|t augment|a
+       save-as=s output|mfolder|o=s format|f=s dedupe|d=s threads|t+ augment|a
        sort|s=s reverse|r offset=i remote! local! external! pretty
        include|I=s@ exclude=s@ only=s@ jobs|j=s globoff|g stdin|
+       import-remote! lock=s@
        alert=s@ mua=s no-torsocks torsocks=s verbose|v+ quiet|q C=s@),
        PublicInbox::LeiQuery::curl_opt(), opt_dash('limit|n=i', '[0-9]+') ],
 
@@ -171,7 +172,7 @@ our %CMD = ( # sorted in order of importance/use:
 'import' => [ 'LOCATION...|--stdin',
        'one-time import/update from URL or filesystem',
        qw(stdin| offset=i recursive|r exclude=s include|I=s
-       format|f=s kw|keywords|flags! C=s@),
+       in-format|F=s kw|keywords|flags! C=s@),
        ],
 'convert' => [ 'LOCATION...|--stdin',
        'one-time conversion from URL or filesystem to another format',
@@ -225,13 +226,14 @@ my %OPTDESC = (
                'whether or not to wrap git and curl commands with torsocks'],
 'no-torsocks' => 'alias for --torsocks=no',
 'save-as=s' => ['NAME', 'save a search terms by given name'],
+'import-remote!' => 'do not memoize remote messages into local store',
 
 'type=s' => [ 'any|mid|git', 'disambiguate type' ],
 
 'dedupe|d=s' => ['STRATEGY|content|oid|mid|none',
                'deduplication strategy'],
 'show  threads|t' => 'display entire thread a message belongs to',
-'q     threads|t' =>
+'q     threads|t+' =>
        'return all messages in the same threads as the actual match(es)',
 'alert=s@' => ['CMD,:WINCH,:bell,<any command>',
        'run command(s) or perform ops when done writing to output ' .
@@ -397,9 +399,9 @@ sub fail ($$;$) {
        undef;
 }
 
-sub check_input_format ($;$$) {
-       my ($self, $files, $opt_key) = @_;
-       $opt_key //= 'format';
+sub check_input_format ($;$) {
+       my ($self, $files) = @_;
+       my $opt_key = 'in-format';
        my $fmt = $self->{opt}->{$opt_key};
        if (!$fmt) {
                my $err = $files ? "regular file(s):\n@$files" : '--stdin';
@@ -850,8 +852,7 @@ sub poke_mua { # forces terminal MUAs to wake up and hopefully notice new mail
 # caller needs to "-t $self->{1}" to check if tty
 sub start_pager {
        my ($self) = @_;
-       my $env = $self->{env};
-       my $fh = popen_rd([qw(git var GIT_PAGER)], $env);
+       my $fh = popen_rd([qw(git var GIT_PAGER)]);
        chomp(my $pager = <$fh> // '');
        close($fh) or warn "`git var PAGER' error: \$?=$?";
        return if $pager eq 'cat' || $pager eq '';
@@ -860,6 +861,7 @@ sub start_pager {
        pipe(my ($r, $wpager)) or return warn "pipe: $!";
        my $rdr = { 0 => $r, 1 => $self->{1}, 2 => $self->{2} };
        my $pgr = [ undef, @$rdr{1, 2} ];
+       my $env = $self->{env};
        if ($self->{sock}) { # lei(1) process runs it
                delete @$new_env{keys %$env}; # only set iff unset
                send_exec_cmd($self, [ @$rdr{0..2} ], [$pager], $new_env);
@@ -974,7 +976,7 @@ sub event_step_init {
 
 sub noop {}
 
-our $oldset; sub oldset { $oldset }
+sub oldset { $oldset }
 
 sub dump_and_clear_log {
        if (defined($errors_log) && -s STDIN && seek(STDIN, 0, SEEK_SET)) {