Jan Høydahl created SOLR-17357:
----------------------------------

             Summary: Move usage string from bin/solr[.cmd] to XxxTool, for 
--help
                 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


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