You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by "Viesca Novack, Andrei" <an...@amazon.com> on 2012/10/26 00:47:42 UTC

[CLI] Using OptionGroups

Hello all,
First of all I thank you for Commons CLI, such a useful library!

Question:
I have two sets of arguments in my command line java program, I haven't been able to find documentation on how to handle different OptionGroups, I want to have the program detect that it got either group1, group2 or help. To make it interesting, group 1 contains required and not required arguments.

I am using release 1.2 and here's my code so far:

Option in = OptionBuilder.hasArg().withArgName("file")
				.withLongOpt("in").withDescription("VCD file to convert.")
				.create("i");
		in.setRequired(true);

		Option out = OptionBuilder.hasArg().withArgName("file")
				.withLongOpt("out").withDescription("Output CSV file.")
				.create("o");
		out.setRequired(true);

		Option getsignals = new Option(
				"g",
				"getsignals",
				false,
				"Gets a list of signals available in a VCD file. Use in conjunction with the i option only.");
		getsignals.setRequired(true);

		Option signals = OptionBuilder
				.hasArgs()
				.withArgName("signalList")
				.withLongOpt("signals")
				.withDescription(
						"Comma separated list of requested signals to include in the CSV.")
				.withValueSeparator(',').withType(new ArrayList<String>())
				.create("s");
		signals.setRequired(true);

		Option timeUnit = OptionBuilder
				.hasArg()
				.withLongOpt("timeUnit")
				.withDescription(
						"Time units to use. Options: 'ms','us' or 'ns'.")
				.create("t");
		timeUnit.setRequired(false);

		Option noDuplicates = new Option("n", "noDuplicates", false,
				"Set flag to remove duplicate time entries.");
		noDuplicates.setRequired(false);

		Option append = new Option("a", "append", false,
				"Set flag to append information to existing CSV.");
		append.setRequired(false);

		Option getDeltas = new Option("d", "deltas", false,
				"Set to calculate delta values between entries.");
		getDeltas.setRequired(false);

		Option help = new Option("h", "help", false,
				"Prints usage information.");
		help.setRequired(true);

		// Group for converting:
		options = new Options();
		OptionGroup groupConvert = new OptionGroup();
		groupConvert.addOption(in);
		groupConvert.addOption(out);
		groupConvert.addOption(signals);
		groupConvert.addOption(timeUnit);
		groupConvert.addOption(noDuplicates);
		groupConvert.addOption(append);
		groupConvert.addOption(getDeltas);
		groupConvert.addOption(getsignals);
		groupConvert.setRequired(true);

		// Group for viewing signals
		OptionGroup groupViewSignals = new OptionGroup();
		groupViewSignals.addOption(in);
		groupViewSignals.addOption(getsignals);
		groupViewSignals.setRequired(true);

		options.addOption(help);
		options.addOptionGroup(groupConvert);
		options.addOptionGroup(groupViewSignals);

Thanks!
Andrei Viesca

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org