If you want to minimize the amount of code handling the command
line, JSAP offers a SimpleJSAP
that does most of
the work for you. An instance of SimpleJSAP
works
much like an instance of JSAP
, but it accepts a
command name, a command explanation, and an array of
Parameter
objects (there are several constructors
that should cover most of the common cases, but you can also
chain-invoke setters). If parsing fails for any reason, or if
--help
is specified, the user is fully informed, and
the method messagePrinted()
will return true.
public static void main(String[] args) throws Exception { SimpleJSAP jsap = new SimpleJSAP( "MyProgram", "Repeats \"Hello, world!\" multiple times", new Parameter[] { new FlaggedOption( "count", JSAP.INTEGER_PARSER, "1", JSAP.REQUIRED, 'n', JSAP.NO_LONGFLAG, "The number of times to say hello." ), new QualifiedSwitch( "verbose", JSAP.STRING_PARSER, JSAP.NO_DEFAULT, JSAP.NOT_REQUIRED, 'v', "verbose", "Requests verbose output." ).setList( true ).setListSeparator( ',' ), new UnflaggedOption( "name", JSAP.STRING_PARSER, "World", JSAP.REQUIRED, JSAP.GREEDY, "One or more names of people you would like to greet." ) } ); JSAPResult config = jsap.parse(args); if ( jsap.messagePrinted() ) System.exit( 1 ); String[] names = config.getStringArray("name"); String[] languages = config.getStringArray("verbose"); for (int i = 0; i < languages.length; ++i) { System.out.println("language=" + languages[i]); } for (int i = 0; i < config.getInt("count"); ++i) { for (int j = 0; j < names.length; ++j) { System.out.println((config.getBoolean("verbose") ? "Hello" : "Hi") + ", " + names[j] + "!"); } } }
[mlamb@morbo]$
java com.martiansoftware.jsap.examples.Manual_HelloWorld_Simple -n 2 --verbose ZoidbergHello, Zoidberg! Hello, Zoidberg!
[mlamb@morbo]$
java com.martiansoftware.jsap.examples.Manual_HelloWorld_Simple --verbose:de Farnsworthlanguage=de Hello, Farnsworth!
[mlamb@morbo]$
java com.martiansoftware.jsap.examples.Manual_HelloWorld_Simple -v:de,en Braniganlanguage=de language=en Hello, Branigan!
[mlamb@morbo]$
java com.martiansoftware.jsap.examples.Manual_HelloWorld_Simple Horrible_Gelatanous_BlobHi, Horrible_Gelatanous_Blob!
[mlamb@morbo]$
java com.martiansoftware.jsap.examples.Manual_HelloWorld_Simple --helpUsage: MyProgram [--help] -n <count> [(-v|--verbose)[:verbose1,verbose2,...,verboseN ]] name1 name2 ... nameN Repeats "Hello, world!" multiple times [--help] Prints this help message. -n <count> The number of times to say hello. (default: 1) [(-v|--verbose)[:verbose1,verbose2,...,verboseN ]] Requests verbose output. name1 name2 ... nameN One or more names of people you would like to greet. (default: World)