unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 2/3] lei: rearrange OPT_DESC and drop some TBD switches
Date: Fri, 12 Mar 2021 10:39:42 +0000	[thread overview]
Message-ID: <20210312103943.4783-3-e@80x24.org> (raw)
In-Reply-To: <20210312103943.4783-1-e@80x24.org>

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';
 

  parent reply	other threads:[~2021-03-12 10:39 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2021-03-12 10:39 ` [PATCH 3/3] lei q: mbox*: disable changing parallelism, add --rsyncable Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210312103943.4783-3-e@80x24.org \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).