From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 56CDE1F4B4; Sat, 26 Dec 2020 11:13:11 +0000 (UTC) Date: Sat, 26 Dec 2020 11:13:11 +0000 From: Eric Wong To: Kyle Meyer Cc: meta@public-inbox.org Subject: [RFC] lei: rename proposed "query" command to "q", add JSON output Message-ID: <20201226111311.GA6226@dcvr> References: <20201215120544.GA8927@dcvr> <87ft3xgjse.fsf@kyleam.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <87ft3xgjse.fsf@kyleam.com> List-Id: Kyle Meyer wrote: > I also use notmuch (via its Emacs interface). As someone that will > probably write an Emacs interface for lei (as part of piem), an aspect > of notmuch that I'd be grateful to see in lei is a structured output > format for easier parsing and for conveying the thread layout. `notmuch > show' and `notmuch search' have json and S-expressions. I wouldn't > expect to see S-expressions coming out of lei :), but perhaps json would > be on the table for `lei show' and `lei query' given that it's planned > for $ls_format. OK, before I forget, JSON is added. And an extremely long message on why I want to type less :x ----------8<--------- Subject: [PATCH] lei: rename proposed "query" command to "q", add JSON output Using "query" as a verb may be confusing when we'll also refer to them as nouns with the "-query" sub commands. "query" is also many characters to type without tab-completion on what I expect to be one of the most commonly used sub-commands Furthermore, "q" is also the common query parameter name used by our PSGI interface, as is the case with several major web search engines; so there's an element of familiarity there. The name "search" was disregarded because "show" could be a commonly used lei sub-command, too, and typing "se" for tab-completion may be slow since two-handed typists on QWERTY keyboards won't be able to use alternating hands. "f" or "find" could be a possibility here, too; but we're currently using the term "forget" as a weaker version of "remove" or "rm", though "ignore" could be substituted for "forget", perhaps... Kyle Meyer noted the lack of (proposed) JSON output support so that's been added to the proposed UI. --- lib/PublicInbox/LEI.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index b254e2c5..7002a1f7 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -68,7 +68,7 @@ sub _config_path ($) { # TODO: generate shell completion + help using %CMD and %OPTDESC # command => [ positional_args, 1-line description, Getopt::Long option spec ] our %CMD = ( # sorted in order of importance/use: -'query' => [ 'SEARCH_TERMS...', 'search for messages matching terms', qw( +'q' => [ 'SEARCH_TERMS...', 'search for messages matching terms', qw( save-as=s output|o=s format|f=s dedupe|d=s thread|t augment|a sort|s=s@ reverse|r offset=i remote local! extinbox! since|after=s until|before=s), opt_dash('limit|n=i', '[0-9]+') ], @@ -98,7 +98,7 @@ our %CMD = ( # sorted in order of importance/use: 'set/unset flags on message(s) from stdin', qw(stdin| oid=s exact by-mid|mid:s) ], 'forget' => [ '[--stdin|--oid=OID|--by-mid=MID]', - 'exclude message(s) on stdin from query results', + "exclude message(s) on stdin from `q' search results", qw(stdin| oid=s exact by-mid|mid:s quiet|q) ], 'purge-mailsource' => [ '{URL_OR_PATHNAME|--all}', @@ -175,7 +175,7 @@ my %OPTDESC = ( 'dedupe|d=s' => ['STRAT|content|oid|mid', 'deduplication strategy'], 'show thread|t' => 'display entire thread a message belongs to', -'query thread|t' => +'q thread|t' => 'return all messages in the same thread as the actual match(es)', 'augment|a' => 'augment --output destination instead of clobbering', @@ -186,7 +186,7 @@ my %OPTDESC = ( 'message/object output format' ], 'mark format|f=s' => $stdin_formats, 'forget format|f=s' => $stdin_formats, -'query format|f=s' => [ 'OUT|maildir|mboxrd|mboxcl2|mboxcl|html|oid', +'q format|f=s' => [ 'OUT|maildir|mboxrd|mboxcl2|mboxcl|html|oid|json', 'specify output format, default depends on --output'], 'ls-query format|f=s' => $ls_format, 'ls-extinbox format|f=s' => $ls_format,