This doesn't seem to work. Consider the following example:
private static void foo() throws Exception {
ArgumentBuilder argumentBuilder = new ArgumentBuilder();
DefaultOptionBuilder defaultOptionBuilder = new DefaultOptionBuilder();
CommandBuilder commandBuilder = new CommandBuilder();
GroupBuilder groupBuilder = new GroupBuilder();
Argument nameArgument =
argumentBuilder.withName("name").withMaximum(1).create();
DefaultOption nameOption =
defaultOptionBuilder.withShortName("name").withArgument(nameArgument).withRequired(true).create();
Argument dbNameArgument =
argumentBuilder.withName("db_name").withMaximum(1).create();
DefaultOption dbNameOption =
defaultOptionBuilder.withShortName("name").withArgument(dbNameArgument).withRequired(true).create();
Group dbGroup =
groupBuilder.withOption(dbNameOption).withMinimum(1).create();
DefaultOption databaseOption =
defaultOptionBuilder.withShortName("db").withChildren(dbGroup).create();
Group optionGroup =
groupBuilder.withOption(nameOption).withOption(databaseOption).create();
Command command =
commandBuilder.withName("create").withChildren(optionGroup).create();
Group commands = groupBuilder.withOption(command).create();
Parser parser = new Parser();
parser.setGroup(commands);
System.out.println("Command: " + command);
CommandLine commandLine = parser.parse("create -name foo -db
-name bar".split(" "));
System.out.println(commandLine.getValue(nameOption));
System.out.println(commandLine.getValue(dbNameOption));
}
I get the following output:
Command: [create [-name <name>|-db -name <db_name>]]
Exception in thread "main" org.apache.commons.cli2.OptionException:
Unexpected bar while processing create
at org.apache.commons.cli2.commandline.Parser.parse(Parser.java:100)
at com.foo.Main.foo(Main.java:86)
at com.foo.Main.main(Main.java:18)
Is there a way to express my desired syntax using common-cli? Namely,
I want to be able to have two groups with the same shortnamed option.
The groups may or may not be mutually exclusive.
Thanks,
Eric
Andrew Shirley <[EMAIL PROTECTED]> wrote:
On Fri, Jun 02, 2006 at 06:34:03AM -0700, David wrote:
Dear members,
I have two group options appended to my main group option of my
parser. Let's say -report group option and -process group option. On
both I would like to define the option -date, but I don't know how
to distinguish each case when invoking:
line.hasOption("-date");
is there any way to specifically say, I just want to know if has
option -date from group option -report?
when you are creating the Option objects (for the date option), you
could store them away somewhere and then do the lookup using
CommandLine#hasOption(Option) and similarly CommandLine#getValue(Option)
hope this helps
Andrew
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]