private static void addCandidatesForArgsFollowing(Object obj, List<CharSequence> candidates) { if (obj == null) { return; } if (obj instanceof CommandSpec) { addCandidatesForArgsFollowing((CommandSpec) obj, candidates); } else if (obj instanceof OptionSpec) { addCandidatesForArgsFollowing((OptionSpec) obj, candidates); } else if (obj instanceof PositionalParamSpec) { addCandidatesForArgsFollowing((PositionalParamSpec) obj, candidates); } } private static void addCandidatesForArgsFollowing(CommandSpec commandSpec, List<CharSequence> candidates) {
private static void addCandidatesForArgsFollowing(CommandSpec commandSpec, List<CharSequence> candidates) { if (commandSpec == null) { return; } for (Map.Entry<String, CommandLine> entry : commandSpec.subcommands().entrySet()) { candidates.add(entry.getKey()); candidates.addAll(Arrays.asList(entry.getValue().getCommandSpec().aliases())); } candidates.addAll(commandSpec.optionsMap().keySet()); for (PositionalParamSpec positional : commandSpec.positionalParameters()) { addCandidatesForArgsFollowing(positional, candidates); } } private static void addCandidatesForArgsFollowing(OptionSpec optionSpec, List<CharSequence> candidates) {
if (argIndex >= parseResult.tentativeMatch.size()) { Object startPoint = findCompletionStartPoint(parseResult); addCandidatesForArgsFollowing(startPoint, candidates); } else { Object obj = parseResult.tentativeMatch.get(argIndex); if (obj instanceof CommandSpec) { // subcommand addCandidatesForArgsFollowing(((CommandSpec) obj).parent(), candidates); addCandidatesForArgsFollowing(findCommandFor((OptionSpec) obj, spec), candidates); } else { addCandidatesForArgsFollowing((OptionSpec) obj, candidates); addCandidatesForArgsFollowing(findCommandFor((PositionalParamSpec) obj, spec), candidates); while (i > 0 && !isPicocliModelObject(parseResult.tentativeMatch.get(i))) {i--;} if (i < 0) { return -1; } addCandidatesForArgsFollowing(parseResult.tentativeMatch.get(i), candidates);
private static void addCandidatesForArgsFollowing(Object obj, List<CharSequence> candidates) { if (obj == null) { return; } if (obj instanceof CommandSpec) { addCandidatesForArgsFollowing((CommandSpec) obj, candidates); } else if (obj instanceof OptionSpec) { addCandidatesForArgsFollowing((OptionSpec) obj, candidates); } else if (obj instanceof PositionalParamSpec) { addCandidatesForArgsFollowing((PositionalParamSpec) obj, candidates); } } private static void addCandidatesForArgsFollowing(CommandSpec commandSpec, List<CharSequence> candidates) {
private static void addCandidatesForArgsFollowing(CommandSpec commandSpec, List<CharSequence> candidates) { if (commandSpec == null) { return; } for (Map.Entry<String, CommandLine> entry : commandSpec.subcommands().entrySet()) { candidates.add(entry.getKey()); candidates.addAll(Arrays.asList(entry.getValue().getCommandSpec().aliases())); } candidates.addAll(commandSpec.optionsMap().keySet()); for (PositionalParamSpec positional : commandSpec.positionalParameters()) { addCandidatesForArgsFollowing(positional, candidates); } } private static void addCandidatesForArgsFollowing(OptionSpec optionSpec, List<CharSequence> candidates) {
if (argIndex >= parseResult.tentativeMatch.size()) { Object startPoint = findCompletionStartPoint(parseResult); addCandidatesForArgsFollowing(startPoint, candidates); } else { Object obj = parseResult.tentativeMatch.get(argIndex); if (obj instanceof CommandSpec) { // subcommand addCandidatesForArgsFollowing(((CommandSpec) obj).parent(), candidates); addCandidatesForArgsFollowing(findCommandFor((OptionSpec) obj, spec), candidates); } else { addCandidatesForArgsFollowing((OptionSpec) obj, candidates); addCandidatesForArgsFollowing(findCommandFor((PositionalParamSpec) obj, spec), candidates); while (i > 0 && !isPicocliModelObject(parseResult.tentativeMatch.get(i))) {i--;} if (i < 0) { return -1; } addCandidatesForArgsFollowing(parseResult.tentativeMatch.get(i), candidates);