[ 
https://issues.apache.org/jira/browse/SOLR-17357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17866832#comment-17866832
 ] 

Jan Høydahl commented on SOLR-17357:
------------------------------------

Targeting 9.7 or 9.8 for this. A backport PR 
https://github.com/apache/solr/pull/2566 is ready to merge in 9x

> Improve default --help formatting for CLI Tools, make configurable
> ------------------------------------------------------------------
>
>                 Key: SOLR-17357
>                 URL: https://issues.apache.org/jira/browse/SOLR-17357
>             Project: Solr
>          Issue Type: Sub-task
>          Components: scripts and tools
>            Reporter: Jan Høydahl
>            Assignee: Jan Høydahl
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> In 9.6 the Usage help text for each tool is covered by {{{}bin/solr[.cmd]{}}}.
> On main branch many of the Usage strings were moved to RefGuide in 
> SOLR-16797. That leaves the tool {{--help}} print somewhat amputatet, e.g.
> {code:java}
> $ bin/solr create -h
> usage: create
>  -c,--name <NAME>                 Name of collection or core to create.
>  -d,--confdir <DIR>               Configuration directory to copy when
>                                   creating the new collection; default is
>                                   _default.
>  -help                            Print this message
>  -n,--confname <NAME>             Configuration name; default is the
>                                   collection name.
>  -rf,--replicationFactor <#>      Number of copies of each document across
>                                   the collection (replicas per shard);
>                                   default is 1.
>  -s,--shards <#>                  Number of shards; default is 1.
>  -solrUrl <HOST>                  Base Solr URL, which can be used to
>                                   determine the zkHost if that's not
>                                   known; defaults to:
>                                   http://localhost:8983.
>  -u,--credentials <credentials>   Credentials in the format
>                                   username:password. Example:
>                                   --credentials solr:SolrRocks
>  -verbose                         Enable more verbose command output.
>  -z,--zkHost <HOST>               Zookeeper connection string; unnecessary
>                                   if ZK_HOST is defined in solr.in.sh;
>                                   otherwise, defaults to localhost:9983. 
> {code}
> This Jira is to make this a bit better.
> The {{Tool}} interface provides {{{}getName{}}}, {{getOptions}} and 
> {{{}runTool{}}}. The {{printHelp}} interface of commons-cli has the ability 
> of also printing a {{{}Usage{}}}, header and footer:
> {code:java}
> /**
>  * Prints the help for {@code options} with the specified command line 
> syntax. This method prints help information
>  * to {@link System#out} by default.
>  *
>  * @param cmdLineSyntax the syntax for this application
>  * @param header the banner to display at the beginning of the help
>  * @param options the Options instance
>  * @param footer the banner to display at the end of the help
>  * @param autoUsage whether to print an automatically generated usage 
> statement
>  */
> public void printHelp(final String cmdLineSyntax, final String header, final 
> Options options, final String footer, final boolean autoUsage) {
>     printHelp(getWidth(), cmdLineSyntax, header, options, footer, autoUsage);
> } {code}
> I propose the addition of three methods to our {{Tool}} interface:
> {code:java}
> String getUsage();
> String getHeader();
> String getFooter();{code}
> The default behavior will be to auto generate usage string, and use "List of 
> options:" as header and a link to Reference guide as footer, e.g for assert 
> tool:
> {code:java}
> $ bin/solr assert -h
> usage: bin/solr assert [-c <url>] [-C <url>] [-e] [-m <message>] [-R] [-r] 
> [-S <url>] [-s <url>] [--same-user <directory>] [-t <ms>] [-u <credentials>] 
> [-x <directory>] [-X <directory>]
> List of options:
>  -c,--cloud <url>                 Asserts that Solr is running in cloud mode. 
>  Also fails if Solr not running.  URL
>                                   should be for root Solr path.
>  -C,--not-cloud <url>             Asserts that Solr is not running in cloud 
> mode.  Also fails if Solr not running.  URL
>                                   should be for root Solr path.
>  -e,--exitcode                    Return an exit code instead of printing 
> error message on assert fail.
>  -m,--message <message>           Exception message to be used in place of 
> the default error message.
>  -R,--not-root                    Asserts that we are NOT the root user.
>  -r,--root                        Asserts that we are the root user.
>  -S,--not-started <url>           Asserts that Solr is NOT running on a 
> certain URL. Default timeout is 1000ms.
>  -s,--started <url>               Asserts that Solr is running on a certain 
> URL. Default timeout is 1000ms.
>     --same-user <directory>       Asserts that we run as same user that owns 
> <directory>.
>  -t,--timeout <ms>                Timeout in ms for commands supporting a 
> timeout.
>  -u,--credentials <credentials>   Credentials in the format 
> username:password. Example: --credentials solr:SolrRocks
>  -x,--exists <directory>          Asserts that directory <directory> exists.
>  -X,--not-exists <directory>      Asserts that directory <directory> does NOT 
> exist.
> Please see the Reference Guide for more tools documentation:
> https://solr.apache.org/guide/solr/latest/deployment-guide/solr-control-script-reference.html
>  {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to