diff --git a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java index 18c7146a..c9186933 100644 --- a/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java +++ b/cloud-core/src/main/java/cloud/commandframework/arguments/compound/FlagArgument.java @@ -199,10 +199,27 @@ public final class FlagArgument extends CommandArgument { /* We don't care about the last value and so we expect a flag */ final List strings = new LinkedList<>(); for (final CommandFlag flag : this.flags) { - strings.add(String.format("--%s", flag.getName())); - for (final String alias : flag.getAliases()) { - strings.add(String.format("-%s", alias)); + final String mainFlag = String.format("--%s", flag.getName()); + final List rawInput = commandContext.getRawInput(); + if (rawInput.contains(mainFlag)) { + continue; /* Flag was already used */ } + final List 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; } else { diff --git a/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java b/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java index 19d8c4f1..53cdf5ec 100644 --- a/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java @@ -163,7 +163,7 @@ public class CommandSuggestionsTest { Assertions.assertEquals(Arrays.asList("foo", "bar"), suggestions2); final String input3 = "flags 10 --enum foo "; final List suggestions3 = manager.suggest(new TestCommandSender(), input3); - Assertions.assertEquals(Arrays.asList("--enum", "--static"), suggestions3); + Assertions.assertEquals(Collections.singletonList("--static"), suggestions3); }