I use Apache Commons CLI for parsing command line arguments.
I am looking for a way to display multiple argument value names in the help. Here is an example for one argument of the option "startimport":
Option startimport = OptionBuilder
.withArgName("environment")
.hasArg()
.withDescription(
"Description")
.create("startimport");
When I use -help it prints out:
-startimport <environment> Description
Thatfs fine. But what if I want to use two arguments?
Option startimport = OptionBuilder
.withArgName("firstArg secondArg")
.hasArgs(2)
.withDescription("Description")
.create("startimport ");
Parsing the two arguments is not the problem but I want the following output in the "-help":
startimport <firstArg> <secondArg> Description
But currently I would just get:
startimport <firstArg secondArg> Description
Is there a proper solution for that problem?
I found a way to solve this problem in a way that behaves correctly, and thought I'd share because this is one of the pages Google led me to while researching. This code was written using Commons CLI 1.2.
Option searchApp = OptionBuilder.withArgName("property> <value")
.withValueSeparator(' ')
.hasArgs(2)
.withLongOpt("test")
.withDescription("This is a test description.")
.create("t");
The help message looks like:
-t,--test <property> <value> This is a test description.
It can be used from the command line like this:
java -jar program.jar -t id 5
and a String[] of the arguments can be retrieved in code like this:
Options options = new Options();
options.addOption(searchApp);
PosixParser parser = new PosixParser();
CommandLine cmd = parser.parse( options, args);
String[] searchArgs = cmd.getOptionValues("t");
Then you can retrieve the values with searchArgs[0]
and searchArgs[1]
.