Not a critique on your design, but an RFE ;)

One useful addition to CLI would be to be able to specify
mutually exclusive sets of arguments, which contain common
options. Eg:

usage: org.apache.commons.sql.util.DDL <commands>
commands:
  -execute -db <db> [-version <version>] <db-props> -schema <path> [-drop]
  -print -db <provider> [-version <version>] [-drop]
  -list
  -types <db-props>

db-props:
  -driver <driver> -url <url> [-user <user>] [-password <password>]

In the above, -execute, -print, -list and -types are mutually exclusive,
and <db-props> represents a set of arguments which are applicable to both
-execute and -types.

It would be nice to be able to do something like:

OptionSet dbprops = new OptionSet("db-props");
dbprops.addOption("driver", true, ....);
dbprops.addOption("url", true, ....);
...

OptionSet execute = new OptionSet("execute", "executes DDL for a schema");
execute.addOption("db", true, ....);
execute.addOptionSet(dbprops);
...

OptionSet types = new OptionSet("types", "generate type info");
types.addOptionSet(dbprops);

OptionGroup group = new OptionGroup();
group.addOptionSet(execute);
...
group.addOptionSet(types);


The advantages of this are that:
. CLI can do more of the validation
. HelpFormatter can be enhanced to format wierder command line 
  syntaxes (such as the above), rather than doing it manually in code.


Thoughts?

Thanks,

Tim


> -----Original Message-----
> From: John Keyes [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, February 06, 2003 10:59 AM
> To: commons-dev
> Subject: [CLI] new design possibly?
> 
> 
> I have grown disgruntled with CLIs current design so I have done
> some thinking on the matter (BTW, I know I should have done
> this before a 1.0 release).  Before I finish working on it
> I thought I'd seek comments from you guys.  Check out the
> class diagram at http://www.integralsource.com/cli/datatype.gif
> and let me hear your comments.
> 
> Thanks,
> -John K
> - - - - - - - - - - - - - - - - - - - - - - -
> Jakarta Commons CLI
> http://jakarta.apache.org/commons/cli
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to