* [PATCH 2/3] lei: rearrange OPT_DESC and drop some TBD switches
2021-03-12 10:39 [PATCH 0/3] lei CLI option updates Eric Wong
2021-03-12 10:39 ` [PATCH 1/3] lei: add help + completion for --no-external Eric Wong
@ 2021-03-12 10:39 ` Eric Wong
2021-03-12 10:39 ` [PATCH 3/3] lei q: mbox*: disable changing parallelism, add --rsyncable Eric Wong
2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2021-03-12 10:39 UTC (permalink / raw)
To: meta
It'll be easier for us to have the option-spec in front of the
command instead of the other way around. The option-spec in
front makes it easier to sort and keep track of potentially
confusing/ambiguous use of command-line switches between
different commands.
We'll also update some of the proposed switches while we're
at it.
---
lib/PublicInbox/LEI.pm | 38 +++++++++++++++-----------------------
lib/PublicInbox/LeiHelp.pm | 2 +-
2 files changed, 16 insertions(+), 24 deletions(-)
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index ddc27361..9bf60ad4 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -133,7 +133,7 @@ our %CMD = ( # sorted in order of importance/use:
qw(prune quiet|q C=s@) ],
'ls-query' => [ '[FILTER...]', 'list saved search queries',
- qw(name-only format|f=s z C=s@) ],
+ qw(name-only format|f=s C=s@) ],
'rm-query' => [ 'QUERY_NAME', 'remove a saved search', qw(C=s@) ],
'mv-query' => [ qw(OLD_NAME NEW_NAME), 'rename a saved search', qw(C=s@) ],
@@ -240,8 +240,7 @@ my %OPTDESC = (
'dedupe|d=s' => ['STRATEGY|content|oid|mid|none',
'deduplication strategy'],
-'show threads|t' => 'display entire thread a message belongs to',
-'q threads|t+' =>
+'threads|t+' =>
'return all messages in the same threads as the actual match(es)',
'want|w=s@' => [ 'PREFIX|dfpost|dfn', # common ones in help...
@@ -260,17 +259,11 @@ my %OPTDESC = (
'mua=s' => [ 'CMD',
"MUA to run on --output Maildir or mbox (e.g.\xa0`mutt\xa0-f\xa0%f')" ],
-'show format|f=s' => [ 'OUT|plain|raw|html|mboxrd|mboxcl2|mboxcl',
- 'message/object output format' ],
-'mark format|f=s' => $stdin_formats,
-'forget format|f=s' => $stdin_formats,
-
-'add-external inbox-version=i' => [ 'NUM|1|2',
+'inbox-version=i' => [ 'NUM|1|2',
'force a public-inbox version with --mirror'],
-'add-external mirror=s' => [ 'URL', 'mirror a public-inbox'],
+'mirror=s' => [ 'URL', 'mirror a public-inbox'],
# public-inbox-index options
-'add-external jobs|j=i' => 'set parallelism when indexing after --mirror',
'fsync!' => 'speed up indexing after --mirror, risk index corruption',
'compact' => 'run compact index after mirroring',
'indexlevel|L=s' => [ 'LEVEL|full|medium|basic',
@@ -284,23 +277,22 @@ my %OPTDESC = (
'skip-docdata' =>
'drop compatibility w/ public-inbox <1.6 to save ~1.5% space',
-'q format|f=s' => [
+'format|f=s q' => [
'OUT|maildir|mboxrd|mboxcl2|mboxcl|mboxo|html|json|jsonl|concatjson',
'specify output format, default depends on --output'],
-'q exclude=s@' => [ 'LOCATION',
+'exclude=s@ q' => [ 'LOCATION',
'exclude specified external(s) from search' ],
-'q include|I=s@' => [ 'LOCATION',
+'include|I=s@ q' => [ 'LOCATION',
'include specified external(s) in search' ],
-'q only=s@' => [ 'LOCATION',
+'only=s@ q' => [ 'LOCATION',
'only use specified external(s) for search' ],
-
-'q jobs=s' => [ '[SEARCH_JOBS][,WRITER_JOBS]',
+'jobs=s q' => [ '[SEARCH_JOBS][,WRITER_JOBS]',
'control number of search and writer jobs' ],
+'jobs|j=i add-external' => 'set parallelism when indexing after --mirror',
-'import format|f=s' => $stdin_formats,
-
-'ls-query format|f=s' => $ls_format,
-'ls-external format|f=s' => $ls_format,
+'in-format|F=s' => $stdin_formats,
+'format|f=s ls-query' => $ls_format,
+'format|f=s ls-external' => $ls_format,
'limit|n=i@' => ['NUM', 'limit on number of matches (default: 10000)' ],
'offset=i' => ['OFF', 'search result offset (default: 0)'],
@@ -770,7 +762,7 @@ sub lei__complete {
my $x = length > 1 ? "--$_" : "-$_";
$x eq $cur ? () : $x;
} grep(!/_/, split(/\|/, $_, -1)) # help|h
- } grep { $OPTDESC{"$cmd\t$_"} || $OPTDESC{$_} } @spec);
+ } grep { $OPTDESC{"$_\t$cmd"} || $OPTDESC{$_} } @spec);
} elsif ($cmd eq 'config' && !@argv && !$CONFIG_KEYS{$cur}) {
puts $self, grep(/$re/, keys %CONFIG_KEYS);
}
@@ -785,7 +777,7 @@ sub lei__complete {
# (TODO: completion for external paths)
shift(@v) if uc($v[0]) eq $v[0];
@v;
- } grep(/\A(?:$cmd\t|)(?:[\w-]+\|)*$opt\b/, keys %OPTDESC);
+ } grep(/\A(?:[\w-]+\|)*$opt\b.*?(?:\t$cmd)?\z/, keys %OPTDESC);
}
$cmd =~ tr/-/_/;
if (my $sub = $self->can("_complete_$cmd")) {
diff --git a/lib/PublicInbox/LeiHelp.pm b/lib/PublicInbox/LeiHelp.pm
index a654e1c2..be31c2a8 100644
--- a/lib/PublicInbox/LeiHelp.pm
+++ b/lib/PublicInbox/LeiHelp.pm
@@ -20,7 +20,7 @@ sub call {
my @opt_desc;
my $lpad = 2;
for my $sw (grep { !ref } @info) { # ("prio=s", "z", $GLP_PASS)
- my $desc = $OPTDESC->{"$cmd\t$sw"} // $OPTDESC->{$sw} // next;
+ my $desc = $OPTDESC->{"$sw\t$cmd"} // $OPTDESC->{$sw} // next;
my $arg_vals = '';
($arg_vals, $desc) = @$desc if ref($desc) eq 'ARRAY';
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] lei q: mbox*: disable changing parallelism, add --rsyncable
2021-03-12 10:39 [PATCH 0/3] lei CLI option updates Eric Wong
2021-03-12 10:39 ` [PATCH 1/3] lei: add help + completion for --no-external Eric Wong
2021-03-12 10:39 ` [PATCH 2/3] lei: rearrange OPT_DESC and drop some TBD switches Eric Wong
@ 2021-03-12 10:39 ` Eric Wong
2 siblings, 0 replies; 4+ messages in thread
From: Eric Wong @ 2021-03-12 10:39 UTC (permalink / raw)
To: meta
Unfortunately, being mairix-compatible with --threads means we
can't change thread-count of gzip, bzip2, or xz when writing to
compressed mbox with a --threads= parameter. It's probably not
worth changing, anyways, so another switch or additional value
for --jobs= won't be added.
While we're in the area, add --rsyncable support since
most installations of gzip support it nowadays.
Fixes: 5beb4a5f6585acd ("lei: replace --thread with --threads")
---
lib/PublicInbox/LEI.pm | 2 +-
lib/PublicInbox/LeiToMail.pm | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 9bf60ad4..59a3338c 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -113,7 +113,7 @@ our %CMD = ( # sorted in order of importance/use:
qw(save-as=s output|mfolder|o=s format|f=s dedupe|d=s threads|t+
sort|s=s reverse|r offset=i remote! local! external! pretty
include|I=s@ exclude=s@ only=s@ jobs|j=s globoff|g augment|a
- import-remote! import-before! lock=s@
+ import-remote! import-before! lock=s@ rsyncable
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]+') ],
diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm
index 13b4f672..13764d79 100644
--- a/lib/PublicInbox/LeiToMail.pm
+++ b/lib/PublicInbox/LeiToMail.pm
@@ -170,9 +170,9 @@ sub reap_compress { # dwaitpid callback
# { foo => '' } means "--foo" is passed to the command-line,
# otherwise { foo => '--bar' } passes "--bar"
our %zsfx2cmd = (
- gz => [ qw(GZIP pigz gzip), { rsyncable => '', threads => '-p' } ],
+ gz => [ qw(GZIP pigz gzip), { rsyncable => '' } ],
bz2 => [ 'bzip2', {} ],
- xz => [ 'xz', { threads => '-T' } ],
+ xz => [ 'xz', {} ],
# XXX does anybody care for these? I prefer zstd on entire FSes,
# so it's probably not necessary on a per-file basis
# zst => [ 'zstd', { -default => [ qw(-q) ], # it's noisy by default
@@ -203,7 +203,7 @@ sub zsfx2cmd ($$$) {
my $switch = $cmd_opt->{rsyncable} // next;
push @cmd, '--'.($switch || $bool);
}
- for my $key (qw(threads)) { # support compression level?
+ for my $key (qw(rsyncable)) { # support compression level?
my $switch = $cmd_opt->{$key} // next;
my $val = $lei->{opt}->{$key} // next;
push @cmd, $switch, $val;
^ permalink raw reply related [flat|nested] 4+ messages in thread