public Set<String> apply(OptionMetadata input) { return input.getOptions(); } };
private OptionMetadata findOption(List<OptionMetadata> options, String param) { for (OptionMetadata optionMetadata : options) { if (optionMetadata.getOptions().contains(param)) { return optionMetadata; } } return null; }
@Override public int compare(OptionMetadata o1, OptionMetadata o2) { String option1 = o1.getOptions().iterator().next(); option1 = option1.replaceFirst("^-+", ""); String option2 = o2.getOptions().iterator().next(); option2 = option2.replaceFirst("^-+", ""); return ComparisonChain.start() .compare(option1.toLowerCase(), option2.toLowerCase()) .compare(option2, option1) // print lower case letters before upper case .compare(System.identityHashCode(o1), System.identityHashCode(o2)) .result(); } };
public static String toDescription(OptionMetadata option) { Set<String> options = option.getOptions(); StringBuilder stringBuilder = new StringBuilder(); final String argumentString; if (option.getArity() > 0) { argumentString = Joiner.on(" ").join(Lists.transform(ImmutableList.of(option.getTitle()), new Function<String, String>() { public String apply(@Nullable String argument) { return "<" + argument + ">"; } })); } else { argumentString = null; } Joiner.on(", ").appendTo(stringBuilder, transform(options, new Function<String, String>() { public String apply(@Nullable String option) { if (argumentString != null) { return option + " " + argumentString; } return option; } })); return stringBuilder.toString(); }
private static List<OptionMetadata> mergeOptionSet(List<OptionMetadata> options) { ListMultimap<OptionMetadata, OptionMetadata> metadataIndex = ArrayListMultimap.create(); for (OptionMetadata option : options) { metadataIndex.put(option, option); } options = ImmutableList.copyOf(transform(metadataIndex.asMap().values(), new Function<Collection<OptionMetadata>, OptionMetadata>() { @Override public OptionMetadata apply(@Nullable Collection<OptionMetadata> options) { return new OptionMetadata(options); } })); Map<String, OptionMetadata> optionIndex = newHashMap(); for (OptionMetadata option : options) { for (String optionName : option.getOptions()) { if (optionIndex.containsKey(optionName)) { throw new IllegalArgumentException(String.format("Fields %s and %s have conflicting definitions of option %s", optionIndex.get(optionName).getAccessors().iterator().next(), option.getAccessors().iterator().next(), optionName)); } optionIndex.put(optionName, option); } } return options; }
public static String toUsage(OptionMetadata option) Set<String> options = option.getOptions(); boolean required = option.isRequired(); StringBuilder stringBuilder = new StringBuilder();
private void validate(ParseState state) { CommandMetadata command = state.getCommand(); if (command == null) { List<String> unparsedInput = state.getUnparsedInput(); if (unparsedInput.isEmpty()) { throw new ParseCommandMissingException(); } else { throw new ParseCommandUnrecognizedException(unparsedInput); } } ArgumentsMetadata arguments = command.getArguments(); if (state.getParsedArguments().isEmpty() && arguments != null && arguments.isRequired()) { throw new ParseArgumentsMissingException(arguments.getTitle()); } if (!state.getUnparsedInput().isEmpty()) { throw new ParseArgumentsUnexpectedException(state.getUnparsedInput()); } if (state.getLocation() == Context.OPTION) { throw new ParseOptionMissingValueException(state.getCurrentOption().getTitle()); } for (OptionMetadata option : command.getAllOptions()) { if (option.isRequired() && !state.getParsedOptions().containsKey(option)) { throw new ParseOptionMissingException(option.getOptions().iterator().next()); } } }
if (!option.isHidden() && option.getDescription() != null) { descriptionPrinter.append("With") .append(longest(option.getOptions())) .append("option,") .append(option.getDescription())