✨ Only suggest each flag one time
This commit is contained in:
parent
06a34651bf
commit
78796255a2
2 changed files with 21 additions and 4 deletions
|
|
@ -199,10 +199,27 @@ public final class FlagArgument<C> extends CommandArgument<C, Object> {
|
||||||
/* We don't care about the last value and so we expect a flag */
|
/* We don't care about the last value and so we expect a flag */
|
||||||
final List<String> strings = new LinkedList<>();
|
final List<String> strings = new LinkedList<>();
|
||||||
for (final CommandFlag<?> flag : this.flags) {
|
for (final CommandFlag<?> flag : this.flags) {
|
||||||
strings.add(String.format("--%s", flag.getName()));
|
final String mainFlag = String.format("--%s", flag.getName());
|
||||||
for (final String alias : flag.getAliases()) {
|
final List<String> rawInput = commandContext.getRawInput();
|
||||||
strings.add(String.format("-%s", alias));
|
if (rawInput.contains(mainFlag)) {
|
||||||
|
continue; /* Flag was already used */
|
||||||
}
|
}
|
||||||
|
final List<String> flagAliases = new LinkedList<>();
|
||||||
|
boolean flagUsed = false;
|
||||||
|
for (final String alias : flag.getAliases()) {
|
||||||
|
final String aliasFlag = String.format("-%s", alias);
|
||||||
|
if (rawInput.contains(aliasFlag)) {
|
||||||
|
flagUsed = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
flagAliases.add(aliasFlag);
|
||||||
|
}
|
||||||
|
if (flagUsed) {
|
||||||
|
continue; /* Flag was already used via an alias */
|
||||||
|
}
|
||||||
|
|
||||||
|
strings.add(mainFlag);
|
||||||
|
strings.addAll(flagAliases);
|
||||||
}
|
}
|
||||||
return strings;
|
return strings;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -163,7 +163,7 @@ public class CommandSuggestionsTest {
|
||||||
Assertions.assertEquals(Arrays.asList("foo", "bar"), suggestions2);
|
Assertions.assertEquals(Arrays.asList("foo", "bar"), suggestions2);
|
||||||
final String input3 = "flags 10 --enum foo ";
|
final String input3 = "flags 10 --enum foo ";
|
||||||
final List<String> suggestions3 = manager.suggest(new TestCommandSender(), input3);
|
final List<String> suggestions3 = manager.suggest(new TestCommandSender(), input3);
|
||||||
Assertions.assertEquals(Arrays.asList("--enum", "--static"), suggestions3);
|
Assertions.assertEquals(Collections.singletonList("--static"), suggestions3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue