I can create 2 mutually exclusive options using the following:
Option a = OptionBuilder.create("a");
Option b = OptionBuilder.create("b");
OptionGroup optgrp = new OptionGroup();
optgrp .setRequired(true);
optgrp .addOption(a);
optgrp .addOption(b);
The above will force the user to provide either option a or option b.
But if I have a third option, c:
Option c = OptionBuilder.create("c");
is it possible to create mutually exclusive options such that:
Either:
I couldn't see a way to do it using OptionGroup?
As a workaround to this, I implemented the following, not ideal, but..
public static void validate(final CommandLine cmdLine) {
final boolean aSupplied = cmdLine.hasOption(A);
final boolean bAndCSupplied = cmdLine.hasOption(B) && cmdLine.hasOption(C);
final boolean bOrCSupplied = !bAndCSupplied && (cmdLine.hasOption(B) || cmdLine.hasOption(C));
if ((aSupplied && bAndCSupplied) || (!aSupplied && !bAndCSupplied)
|| (aSupplied && bOrCSupplied )) {
throw new Exception(...);
}
}