@Test public void createAndCopy() { Option option = new Option() .setArgName(TestUtils.randomAlphaString(100)) .addChoice(TestUtils.randomAlphaString(100)) .setDefaultValue(TestUtils.randomAlphaString(100)) .setDescription(TestUtils.randomAlphaString(100)) .setFlag(TestUtils.randomBoolean()) .setHelp(TestUtils.randomBoolean()) .setHidden(TestUtils.randomBoolean()) .setLongName(TestUtils.randomAlphaString(100)) .setMultiValued(TestUtils.randomBoolean()) .setRequired(TestUtils.randomBoolean()) .setShortName(TestUtils.randomAlphaString(100)) .setSingleValued(TestUtils.randomBoolean()); Option copy = new Option(option); assertEquals(copy.getArgName(), option.getArgName()); assertEquals(copy.getChoices(), option.getChoices()); assertEquals(copy.getDefaultValue(), option.getDefaultValue()); assertEquals(copy.getDescription(), option.getDescription()); assertEquals(copy.isFlag(), option.isFlag()); assertEquals(copy.isHelp(), option.isHelp()); assertEquals(copy.isHidden(), option.isHidden()); assertEquals(copy.getLongName(), option.getLongName()); assertEquals(copy.isMultiValued(), option.isMultiValued()); assertEquals(copy.isRequired(), option.isRequired()); assertEquals(copy.getShortName(), option.getShortName()); assertEquals(copy.isSingleValued(), option.isSingleValued());
case "argName": if (member.getValue() instanceof String) { obj.setArgName((String)member.getValue()); list.add((String)item); }); obj.setChoices(list); obj.setDefaultValue((String)member.getValue()); obj.setDescription((String)member.getValue()); obj.setFlag((Boolean)member.getValue()); obj.setHelp((Boolean)member.getValue()); obj.setHidden((Boolean)member.getValue()); obj.setLongName((String)member.getValue()); obj.setMultiValued((Boolean)member.getValue()); case "required": if (member.getValue() instanceof Boolean) { obj.setRequired((Boolean)member.getValue()); obj.setShortName((String)member.getValue()); obj.setSingleValued((Boolean)member.getValue());
@Test public void testUsageComputationWhenUsingShortAndLongFlagOption() { final CLI cli = CLI.create("test") .addOption(new Option().setLongName("flag").setShortName("f").setDescription("turn on/off").setFlag(true)); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test [-f]") .contains(" -f,--flag turn on/off"); }
@Test(expected = MissingValueException.class) public void testMissingValue() throws CLIException { Option[] options = new Option[]{ new Option().setShortName("f").setLongName("file").setSingleValued(true) }; cli.addOptions(Arrays.asList(options)); cli.parse(Collections.singletonList("--file")); }
Context context = vertx.getOrCreateContext(); CLI cli = CLIConfigurator.define(clazz); cli.addOption(new Option().setArgName("help").setFlag(true).setShortName("h").setLongName("help").setDescription("this help").setHelp(true));
@Test public void testHelpOption() { CLI cli = new DefaultCLI().setName("test"); cli.addOption(new Option().setLongName("foo").setRequired(true)); cli.addOption(new Option().setLongName("help").setShortName("h").setHelp(true).setFlag(true));
@Test public void testFlag() { final CLI cli = CLI.create("test") .addOption(new Option().setShortName("f").setFlag(true)) .addOption(new Option().setShortName("x")); final CommandLine evaluated = cli.parse(Arrays.asList("-f", "-x", "foo")); assertThat(evaluated.isFlagEnabled("f")).isTrue(); assertThat((String) evaluated.getOptionValue("x")).isEqualToIgnoringCase("foo"); }
@Test public void testWithMultipleValues() throws CLIException { Option[] options = new Option[]{ new Option().setShortName("f").setLongName("file") .setMultiValued(true) }; cli.addOptions(Arrays.asList(options)); CommandLine evaluated = cli.parse(Arrays.asList("-f=hello.txt", "--file=hello2.txt")); assertThat(evaluated.cli().getOptions()).hasSize(1); assertThat((String) evaluated.getOptionValue("file")).isEqualTo("hello.txt"); assertThat(evaluated.getOptionValues("f")) .containsExactly("hello.txt", "hello2.txt"); }
@Test public void testUsageComputationWhenUsingOnlyLongOption() { final CLI cli = CLI.create("test") .addOption(new Option().setLongName("file").setDescription("a file")); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test [--file <value>]") .contains(" --file <value> a file"); }
@Test public void testUsageComputationWhenUsingOnlyShortOption() { final CLI cli = CLI.create("test") .addOption(new Option().setShortName("f").setDescription("a file")); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("test [-f <value>]") .contains(" -f <value> a file"); }
@Test public void testOptionsWithChoicesAndDefault() { CLI cli = new DefaultCLI().setName("test"); cli.addOption(new Option().setLongName("color").addChoice("red").addChoice("blue").addChoice("green") .setDefaultValue("green")); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("[--color {blue, green, red}]") // Usage line .contains(" --color {blue, green, red}"); // options CommandLine line = cli.parse(Arrays.asList("--color", "blue")); assertThat((String) line.getOptionValue("color")).isEqualTo("blue"); try { cli.parse(Collections.singletonList("--color=black")); fail("Invalid value expected"); } catch (InvalidValueException e) { // OK } line = cli.parse(Collections.emptyList()); assertThat((String) line.getOptionValue("color")).isEqualTo("green"); }
@Test public void testOptionsWithChoices() { CLI cli = new DefaultCLI().setName("test"); cli.addOption(new Option().setLongName("color").addChoice("red").addChoice("blue").addChoice("green")); StringBuilder builder = new StringBuilder(); cli.usage(builder); assertThat(builder.toString()) .contains("[--color {blue, green, red}]") // Usage line .contains(" --color {blue, green, red}"); // options CommandLine line = cli.parse(Arrays.asList("--color", "blue")); assertThat((String) line.getOptionValue("color")).isEqualTo("blue"); try { cli.parse(Collections.singletonList("--color=black")); fail("Invalid value expected"); } catch (InvalidValueException e) { // OK } }
public static java.util.List<java.lang.String> getRawValues(io.vertx.core.cli.CommandLine j_receiver, java.util.Map<String, Object> option) { return j_receiver.getRawValues(option != null ? new io.vertx.core.cli.Option(io.vertx.core.impl.ConversionHelper.toJsonObject(option)) : null) != null ? j_receiver.getRawValues(option != null ? new io.vertx.core.cli.Option(io.vertx.core.impl.ConversionHelper.toJsonObject(option)) : null).stream().map(elt -> elt).collect(java.util.stream.Collectors.toList()) : null; } public static java.util.List<java.lang.String> getRawValuesForOption(io.vertx.core.cli.CommandLine j_receiver, java.util.Map<String, Object> option) {
@Test public void testCreation() { AmbiguousOptionException exception = new AmbiguousOptionException("foo", Arrays.asList(new Option().setLongName("foobar"), new Option().setLongName("foobaz"))); assertThat(exception.getOptions()).hasSize(2); assertThat(exception.getToken()).isEqualTo("foo"); assertThat(exception.getMessage()) .contains("Ambiguous argument in command line") .contains("'foo'") .contains("foobar").contains("foobaz"); }
@Override public TypedOption<T> setRequired(boolean required) { super.setRequired(required); return this; }
@Override public TypedOption<T> setLongName(String longName) { super.setLongName(longName); return this; }
@Override public TypedOption<T> setDescription(String description) { super.setDescription(description); return this; }
@Override public TypedOption<T> setShortName(String shortName) { super.setShortName(shortName); return this; }
@Override public TypedOption<T> setMultiValued(boolean acceptMultipleValues) { super.setMultiValued(acceptMultipleValues); return this; }
@Override public TypedOption<T> setArgName(String argName) { super.setArgName(argName); return this; }