From 78796255a213df21801320b34232282093e14e84 Mon Sep 17 00:00:00 2001 From: jmp Date: Tue, 13 Oct 2020 11:21:23 -0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Only=20suggest=20each=20flag=20one?= =?UTF-8?q?=20time?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../arguments/compound/FlagArgument.java | 23 ++++++++++++++++--- .../CommandSuggestionsTest.java | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) 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); }