in core/src/main/java/org/apache/commons/jelly/util/CommandLineParser.java [155:206]
public CommandLine parseCommandLineOptions(String[] args) throws ParseException {
// create the expected options
cmdLineOptions = new Options();
cmdLineOptions.addOption("o", true, "Output file");
cmdLineOptions.addOption("script", true, "Jelly script to run");
cmdLineOptions.addOption("h", "help", false, "Give this help message");
cmdLineOptions.addOption("v", "version", false, "prints Jelly's version and exits");
cmdLineOptions.addOption("script", true, "Jelly script to run");
cmdLineOptions.addOption("awt", false, "Wether to run in the AWT thread.");
cmdLineOptions.addOption("swing", false, "Synonym of \"-awt\".");
List builtinOptionNames = Arrays.asList(new String[] { "-o", "-script", "-h", "--help", "-v", "--version", "-awt", "-swing" });
// -D options will be added to the system properties
Properties sysProps = System.getProperties();
// filter the system property setting from the arg list
// before passing it to the CLI parser
ArrayList filteredArgList = new ArrayList();
for (int i = 0; i < args.length; i++) {
String arg = args[i];
// if this is a -D property parse it and add it to the system properties.
// -D args will not be copied into the filteredArgList.
if (arg.startsWith("-D") && (arg.length() > 2)) {
arg = arg.substring(2);
int ePos = arg.indexOf("=");
if (ePos == -1 || ePos == 0 || ePos == arg.length() - 1)
System.err.println("Invalid system property: \"" + arg + "\".");
sysProps.setProperty(arg.substring(0, ePos), arg.substring(ePos + 1));
} else {
// add this to the filtered list of arguments
filteredArgList.add(arg);
// add additional "-?" options to the options object. if this is not done
// the only options allowed would be the builtin-ones.
if (arg.startsWith("-") && arg.length() > 1) {
if (!(builtinOptionNames.contains(arg))) {
cmdLineOptions.addOption(arg.substring(1, arg.length()), true, "dynamic option");
}
}
}
}
// make the filteredArgList into an array
String[] filterArgs = new String[filteredArgList.size()];
filteredArgList.toArray(filterArgs);
// parse the command line
Parser parser = new org.apache.commons.cli.GnuParser();
return parser.parse(cmdLineOptions, filterArgs);
}