public void testOptionBooleanType() throws IntrospectionException { class A { @Option(names = "o") boolean o; } CommandDescriptor<Instance<A>> c = CommandFactory.DEFAULT.create(A.class); OptionDescriptor i = c.getOption("-o"); assertEquals(Multiplicity.SINGLE, i.getMultiplicity()); assertEquals(false, i.isRequired()); assertEquals(ValueType.BOOLEAN, i.getType()); }
@Override protected void addParameter(ParameterDescriptor parameter) throws IntrospectionException { // Check we can add the option if (parameter instanceof OptionDescriptor) { OptionDescriptor option = (OptionDescriptor)parameter; Set<String> blah = new HashSet<String>(); for (String optionName : option.getNames()) { blah.add((optionName.length() == 1 ? "-" : "--") + optionName); } for (MethodDescriptor<T> method : methods.values()) { Set<String> diff = new HashSet<String>(method.getOptionNames()); diff.retainAll(blah); if (diff.size() > 0) { throw new IntrospectionException("Cannot add method " + method.getName() + " because it has common " + " options with its class: " + diff); } } } // super.addParameter(parameter); }
if (getMultiplicity() == Multiplicity.MULTI && getType() == ValueType.BOOLEAN) { throw new IllegalParameterException(); throw new IllegalParameterException("Option name " + name + " cannot start with " + name.charAt(0)); checkChar(name, 0, A); checkChar(name, length - 1, A); for (int i = 1;i < length - 1;i++) { checkChar(name, i, B); if (getType() == ValueType.BOOLEAN) { arity = 0; } else {
if (getMultiplicity() == Multiplicity.SINGLE) { if (values.size() > 1) { throw new SyntaxException("Too many values " + values + " for option " + names.get(0)); return parse(value); } catch (Exception e) { throw new SyntaxException("Could not parse value <" + value + "> for option " + names.get(0)); for (String value : values) { try { v.add(parse(value)); } catch (Exception e) { throw new SyntaxException("Could not parse value <" + value + "> for option " + names.get(0));
public void testOptionIntListType() throws IntrospectionException { class A { @Option(names = "o") List<Integer> o; } CommandDescriptor<Instance<A>> c = CommandFactory.DEFAULT.create(A.class); OptionDescriptor i = c.getOption("-o"); assertEquals(Multiplicity.MULTI, i.getMultiplicity()); assertEquals(ValueType.INTEGER, i.getType()); }
public void testParameterMetaDescription1() throws Exception { class A { @Command void m(@Foo String s) {} } CommandDescriptor<Instance<A>> c = CommandFactory.DEFAULT.create(A.class); CommandDescriptor<Instance<A>> m = c.getSubordinate("m"); OptionDescriptor a = m.getOption("-a"); assertEquals("foo_usage", a.getUsage()); assertEquals("foo_usage", a.getDescription().getUsage()); assertEquals("foo_man", a.getDescription().getMan()); }
public void testAnnotation() throws IntrospectionException { class A { @Level String l; } CommandDescriptor<Instance<A>> a = CommandFactory.DEFAULT.create(A.class); assertEquals(1,a.getOptions().size()); OptionDescriptor i = a.getOption("-l"); assertEquals(Arrays.asList("l"),i.getNames()); assertTrue(i.getAnnotation() instanceof Level); } }
if (values.size() == 0) { return new SpaceCompletion(); } else if (values.size() <= option.getArity()) { Token.Literal.Word word = optionEvent.peekLast(); return new ParameterCompletion(word.getValue(), delimiter, option, completer); if (values.size() < option.getArity()) { return new ParameterCompletion("", delimiter, option, completer); } else {
writer.append("usage: ").append(getName()); for (OptionDescriptor option : getOptions()) { option.printUsage(writer); writer.append(" "); StringBuilder sb = new StringBuilder(); option.printUsage(sb); String usage = sb.toString(); writer.append(usage); parameterBilto.add(option.getUsage());
for (OptionDescriptor option : getOptions()) { writer.append(" "); option.printUsage(writer); for (OptionDescriptor option : getOptions()) { writer.append(Util.MAN_TAB); option.printUsage(writer); String optionText = option.getDescription().getBestEffortMan(); if (optionText.length() > 0) { writer.append("\n"); for (OptionDescriptor option : owner.getOptions()) { writer.append(" "); option.printUsage(writer); option.printUsage(writer);
protected void printFQNWithOptions(CommandDescriptor<?> command, Appendable stream) throws IOException { CommandDescriptor<?> owner = command.getOwner(); if (owner != null) { printFQNWithOptions(owner, stream); stream.append(' '); } stream.append(command.getName()); for (OptionDescriptor option : command.getOptions()) { stream.append(' '); option.printUsage(stream); } }
if (getMultiplicity() == Multiplicity.SINGLE) { if (values.size() > 1) { throw new SyntaxException("Too many values " + values + " for option " + names.get(0)); return parse(value); } catch (Exception e) { throw new SyntaxException("Could not parse value <" + value + "> for option " + names.get(0)); for (String value : values) { try { v.add(parse(value)); } catch (Exception e) { throw new SyntaxException("Could not parse value <" + value + "> for option " + names.get(0));
public void testOptionStringListType() throws IntrospectionException { class A { @Option(names = "o") List<String> o; } CommandDescriptor<Instance<A>> c = CommandFactory.DEFAULT.create(A.class); OptionDescriptor i = c.getOption("-o"); assertEquals(Multiplicity.MULTI, i.getMultiplicity()); assertEquals(ValueType.STRING, i.getType()); }
public void testParameterMetaDescription3() throws Exception { class A { @Command void m( @Usage("option_usage") @Foo String s) {} } CommandDescriptor<Instance<A>> c = CommandFactory.DEFAULT.create(A.class); CommandDescriptor<Instance<A>> m = c.getSubordinate("m"); OptionDescriptor a = m.getOption("-a"); assertEquals("option_usage", a.getUsage()); assertEquals("option_usage", a.getDescription().getUsage()); assertEquals("foo_man", a.getDescription().getMan()); } }
if (desc != null) { req.tokenizer.next(); int arity = desc.getArity(); LinkedList<Token.Literal.Word> values = new LinkedList<Token.Literal.Word>(); while (arity > 0) {
protected void printFQNWithOptions(CommandDescriptor<?> command, Appendable stream) throws IOException { CommandDescriptor<?> owner = command.getOwner(); if (owner != null) { printFQNWithOptions(owner, stream); stream.append(' '); } stream.append(command.getName()); for (OptionDescriptor option : command.getOptions()) { stream.append(' '); option.printUsage(stream); } }
public void testOptionBooleanWrapperType() throws IntrospectionException { class A { @Option(names = "o") Boolean o; } CommandDescriptor<Instance<A>> c = CommandFactory.DEFAULT.create(A.class); OptionDescriptor i = c.getOption("-o"); assertEquals(Multiplicity.SINGLE, i.getMultiplicity()); assertEquals(false, i.isRequired()); assertEquals(ValueType.BOOLEAN, i.getType()); }
if (getMultiplicity() == Multiplicity.MULTI && getType() == ValueType.BOOLEAN) { throw new IllegalParameterException(); throw new IllegalParameterException("Option name " + name + " cannot start with " + name.charAt(0)); checkChar(name, 0, A); checkChar(name, length - 1, A); for (int i = 1;i < length - 1;i++) { checkChar(name, i, B); if (getType() == ValueType.BOOLEAN) { arity = 0; } else {
for (String optionName : option.getNames()) { String name; if (optionName.length() == 1) {
if (getMultiplicity() == Multiplicity.SINGLE) { if (values.size() > 1) { throw new SyntaxException("Too many values " + values + " for option " + names.get(0)); return parse(value); } catch (Exception e) { throw new SyntaxException("Could not parse value <" + value + "> for option " + names.get(0)); for (String value : values) { try { v.add(parse(value)); } catch (Exception e) { throw new SyntaxException("Could not parse value <" + value + "> for option " + names.get(0));