The following doesn't work (org.apache.commons.cli.HelpFormatter
)correctly and doesn't print out the help menu of options
that only specify LongOpt.
The output is:
[java] usage: -a | -d | --shutdown | -s | -h [-r <email>] [-f <flight>] [-t]
[java] VendMore - Email Management System
[java] t,-test test mode - makes no permanent changes.
[java] --shutdown shutdown rpc server.
[java] a,-add add user to email queue.
[java] d,-delete delete user from email queue.
[java] f,-flight flight which is the index into the email being sent
[java] h,-help Print this usage information.
[java] -r recipient's email
[java] s,-send send email command
[java] For more information, see Steve Morin
[java] Java Result: 1
it is missing the following options when printing the help display.
options.addOption(OptionBuilder.withDescription("hostname for the XmlRpc
client to connect to.").withLongOpt("hostname").create());
options.addOption(OptionBuilder.withDescription("port for the xmlrpc
client to use.").withLongOpt("port").create());
options.addOption(OptionBuilder.withDescription("additional xmlrpc
connection").withLongOpt("urlpath").create());
options.addOption(OptionBuilder.withDescription("add a parameter
form name=value.").hasArg().withLongOpt("params").create());
example of the offending code
private CommandLineParser cmd;
private Options options;
private OptionGroup ogmain;
public CmdLineArg() {
super();
cmd = new BasicParser();
options = new Options();
ogmain = new OptionGroup();
ogmain.setRequired(true);
localinit();
init();
}
public CommandLine run(String[] args) {
try {
options.addOption(OptionBuilder.withDescription("add a parameter
form name=value.").hasArg().withLongOpt("params").create());
options.addOption(OptionBuilder.withDescription("recipient's
email").hasArg().create('r'));
options.addOption(OptionBuilder.withDescription("flight which is
the index into the email being sent").withLongOpt("flight").hasArg().create('f'));
options.addOption(OptionBuilder.withDescription("test mode - makes
no permanent changes.").withLongOpt("test").create('t'));
ogmain.addOption(OptionBuilder.withDescription("Print this usage
information.").withLongOpt("help").create('h'));
ogmain.addOption(OptionBuilder.withDescription("send email
command").withLongOpt("send").hasArg().create('s'));
ogmain.addOption(OptionBuilder.withDescription("add user to email
queue.").withLongOpt("add").create('a'));
ogmain.addOption(OptionBuilder.withDescription("delete user from email
queue.").withLongOpt("delete").create('d'));
ogmain.addOption(OptionBuilder.withDescription("shutdown rpc
server.").withLongOpt("shutdown").create());
options.addOption(OptionBuilder.withDescription("hostname for the XmlRpc
client to connect to.").withLongOpt("hostname").create());
options.addOption(OptionBuilder.withDescription("port for the xmlrpc
client to use.").withLongOpt("port").create());
options.addOption(OptionBuilder.withDescription("additional xmlrpc
connection").withLongOpt("urlpath").create());
options.addOptionGroup(this.ogmain);
return cmd.parse(options,args);
} catch (ParseException e) {
printUsage();
System.exit(1);
return null;
}
}
protected void printUsage(){
HelpFormatter helpFormatter = new HelpFormatter();
helpFormatter.printHelp(getUSAGE(),getHEADER(),options,getFOOTER());
}