public Completion complete(ParameterDescriptor parameter, String prefix) throws Exception { if (parameter.getType() == ValueType.ENUM) { Completion.Builder builder = null; Class<?> vt = parameter.getDeclaredType(); Method valuesM = vt.getDeclaredMethod("values"); Method nameM = vt.getMethod("name"); Enum<?>[] values = (Enum<?>[])valuesM.invoke(null); for (Enum<?> value : values) { String name = (String)nameM.invoke(value); if (name.startsWith(prefix)) { if (builder == null) { builder = Completion.builder(prefix); } builder.add(name.substring(prefix.length()), true); } } return builder != null ? builder.build() : Completion.create(); } else { return Completion.create(); } } }
static void bind(InvocationMatch<?> match, Iterable<ParameterDescriptor> parameters, Object target, Object[] args) throws SyntaxException, InvocationException { for (ParameterDescriptor parameter : parameters) { ParameterMatch parameterMatch = match.getParameter(parameter); Object value = parameterMatch != null ? parameterMatch.computeValue() : null; if (value == null) { if (parameter.getDeclaredType().isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { ((Binding)parameter).set(target, args, value); } } }
public Completion complete(ParameterDescriptor parameter, String prefix) throws Exception { if (parameter.getType() == ValueType.ENUM) { Completion.Builder builder = null; Class<?> vt = parameter.getDeclaredType(); Method valuesM = vt.getDeclaredMethod("values"); Method nameM = vt.getMethod("name"); Enum<?>[] values = (Enum<?>[])valuesM.invoke(null); for (Enum<?> value : values) { String name = (String)nameM.invoke(value); if (name.startsWith(prefix)) { if (builder == null) { builder = Completion.builder(prefix); } builder.add(name.substring(prefix.length()), true); } } return builder != null ? builder.build() : Completion.create(); } else { return Completion.create(); } } }
public Completion complete(ParameterDescriptor parameter, String prefix) throws Exception { if (parameter.getType() == ValueType.ENUM) { Completion.Builder builder = null; Class<?> vt = parameter.getDeclaredType(); Method valuesM = vt.getDeclaredMethod("values"); Method nameM = vt.getMethod("name"); Enum<?>[] values = (Enum<?>[])valuesM.invoke(null); for (Enum<?> value : values) { String name = (String)nameM.invoke(value); if (name.startsWith(prefix)) { if (builder == null) { builder = Completion.builder(prefix); } builder.add(name.substring(prefix.length()), true); } } return builder != null ? builder.build() : Completion.create(); } else { return Completion.create(); } } }
static void bind(InvocationMatch<?> match, Iterable<ParameterDescriptor> parameters, Object target, Object[] args) throws SyntaxException, InvocationException { for (ParameterDescriptor parameter : parameters) { ParameterMatch parameterMatch = match.getParameter(parameter); Object value = parameterMatch != null ? parameterMatch.computeValue() : null; if (value == null) { if (parameter.getDeclaredType().isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { ((Binding)parameter).set(target, args, value); } } }