user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
* [PATCH 0/3] lei CLI option updates
@ 2021-03-12 10:39 Eric Wong
  2021-03-12 10:39 ` [PATCH 1/3] lei: add help + completion for --no-external Eric Wong
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Eric Wong @ 2021-03-12 10:39 UTC (permalink / raw)
  To: meta

Mentally, I still use "--no-externals" (plural),
but I'm not sure if that's necessary to support with
completion, now...

Eric Wong (3):
  lei: add help + completion for --no-external
  lei: rearrange OPT_DESC and drop some TBD switches
  lei q: mbox*: disable changing parallelism, add --rsyncable

 lib/PublicInbox/LEI.pm       | 41 +++++++++++++++---------------------
 lib/PublicInbox/LeiHelp.pm   |  2 +-
 lib/PublicInbox/LeiToMail.pm |  6 +++---
 3 files changed, 21 insertions(+), 28 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] lei: add help + completion for --no-external
  2021-03-12 10:39 [PATCH 0/3] lei CLI option updates Eric Wong
@ 2021-03-12 10:39 ` 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 ` [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

I just needed it.
---
 lib/PublicInbox/LEI.pm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm
index 50c0a885..ddc27361 100644
--- a/lib/PublicInbox/LEI.pm
+++ b/lib/PublicInbox/LEI.pm
@@ -228,6 +228,7 @@ my %OPTDESC = (
 'globoff|g' => "do not match locations using '*?' wildcards ".
 		"and\xa0'[]'\x{a0}ranges",
 'verbose|v+' => 'be more verbose',
+'external!' => 'do not use externals',
 'solve!' => 'do not attempt to reconstruct blobs from emails',
 'torsocks=s' => ['VAL|auto|no|yes',
 		'whether or not to wrap git and curl commands with torsocks'],

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [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	[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	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-12 10:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [PATCH 3/3] lei q: mbox*: disable changing parallelism, add --rsyncable Eric Wong

user/dev discussion of public-inbox itself

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/meta
	git clone --mirror http://czquwvybam4bgbro.onion/meta
	git clone --mirror http://hjrcffqmbrq6wope.onion/meta
	git clone --mirror http://ou63pmih66umazou.onion/meta

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 meta meta/ https://public-inbox.org/meta \
		meta@public-inbox.org
	public-inbox-index meta

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.mail.public-inbox.meta
	nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.mail.public-inbox.meta
	nntp://ie5yzdi7fg72h7s4sdcztq5evakq23rdt33mfyfcddc5u3ndnw24ogqd.onion/inbox.comp.mail.public-inbox.meta
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta
	nntp://news.gmane.io/gmane.mail.public-inbox.general
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for project(s) associated with this inbox:

	https://80x24.org/public-inbox.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git