Option.builder("valid").shortName("a.inva lid"); } catch (final IllegalArgumentException e) { error3 = true; assertEquals("a.b.c-d", Option.builder("a.b.c-d").build().getShortName()); assertEquals("A", Option.builder("A").build().getShortName()); assertFalse(Option.builder("A").build().getLongName().isPresent()); final Option o = Option.builder("A-T").longName("APPLE-TREE").build(); assertEquals("A-T", o.getShortName()); assertEquals("APPLE-TREE", o.getLongName().get());
/** * Add a help option. A help option is a special option that will trigger * the display of the help menu. A help option may not be added to a group. * @param sn The short name of the help option. * @param ln The long name of the help option. * @param desc The description of the help option. * @return This, as per the builder pattern. */ public Builder addHelpOption(String sn, String ln, String desc) { checkState(!buildingGroup, "A help option can not be added to a group."); final OptionNoArg option = Option.builder(sn) .longName(ln) .description(desc) .buildHelpOption(); add(new HelpParser(option)); addedHelpOption = true; return this; }
/** * Constructs a menu wilt multiple groups and tests the behavior. */ @Test public void multipleGroups() { final Menu m = Menu.builder() .openGroup() .add(Option.builder("a").build(), list, dummyHandler()) .add(Option.builder("b").build(), list, dummyHandler()) .openGroup() .add(Option.builder("c").build(), list, dummyHandler()) .add(Option.builder("d").build(), list, dummyHandler()) .add(Option.builder("e").build(), list, dummyHandler()) .closeGroup() .addHelpOption("h", "help", "Print me") .build(); assertFalse(m.execute("-a", "-c").isPresent()); assertFalse(m.execute("-b", "-d").isPresent()); testFail(m, "a", CauseType.ALREADY_SELECTED, "-b", "-a"); testFail(m, "b", CauseType.ALREADY_SELECTED, "-d", "-a", "-b"); testFail(m, "c", CauseType.ALREADY_SELECTED, "-d", "-a", "-c"); }
/** * Test for checking whether duplicate options are detected. */ @Test(expected = IllegalArgumentException.class) public void duplicateOptions() { final Object subject = new Object(); Menu .builder() .add(Option.builder("a").build(), subject, dummyHandler()) .add(Option.builder("aa", ArgumentParser.stringParser()) .longName("a") .build(), subject, CliTest.<Object, String>dummyArgHandler()); }
@SuppressWarnings({"unchecked", "rawtypes"}) static OptionParser adapt(OptionParser exec, String shortPrefix, String longPrefix) { final Option opt = exec.getOption(); if (opt instanceof OptionArg<?>) { final OptionArg<?> adapted = adaptNames( Option.builder((OptionArg<?>) opt), shortPrefix, longPrefix) .build(); return ((ArgParser) exec).newInstance(adapted); } final OptionNoArg adapted = adaptNames( Option.builder((OptionNoArg) opt), shortPrefix, longPrefix) .build(); return ((NoArgParser<?>) exec).newInstance(adapted); }
static NoArgBuilder builder(OptionNoArg opt) { return new NoArgBuilder(opt); }
/** * Closing a group with just one option is not allowed. */ @Test(expected = IllegalArgumentException.class) public void failGroup2() { Menu.builder() .openGroup() .add(Option.builder("v").build(), list, dummyHandler()) .closeGroup(); }
/** * Create a builder for building {@link OptionNoArg} instances. * @param shortName he short name to use, must conform to this regular * expression: {@link #NAME_REGEX}. * @return A new builder instance. */ public static NoArgBuilder builder(String shortName) { return new NoArgBuilder(shortName); }
static OptionNoArg createJppfOpt(Builder builder) { return Option.builder("j") .longName("jppf") .description( "Compute the experiment using the JPPF framework", builder.getComputer() == Computers.DISTRIBUTED ? DEFAULT_LABEL : "", ". This option can not be used together with the --local option.") .build(); }
static OptionNoArg createJppfOpt(Builder builder) { return Option.builder("j") .longName("jppf") .description( "Compute the experiment using the JPPF framework", builder.getComputer() == Computers.DISTRIBUTED ? DEFAULT_LABEL : "", ". This option can not be used together with the --local option.") .build(); }
static OptionNoArg createLocalOpt(Builder builder) { return Option.builder("l") .longName("local") .description( "Compute the experiment locally", builder.getComputer() == Computers.LOCAL ? DEFAULT_LABEL : "", ". This option can not be used together with the --jppf option.") .build(); }
static OptionNoArg createLocalOpt(Builder builder) { return Option.builder("l") .longName("local") .description( "Compute the experiment locally", builder.getComputer() == Computers.LOCAL ? DEFAULT_LABEL : "", ". This option can not be used together with the --jppf option.") .build(); }