Skip to content

Commit b392dea

Browse files
fixed bug that prevented users from executing a command if the first argument was only 1 letter long
1 parent e1c1230 commit b392dea

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/main/java/com/datasiqn/commandcore/command/builder/BuilderCommand.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public boolean hasDescription() {
163163
private @NotNull Result<ApplicableNode, List<String>> checkApplicable(@NotNull ArgumentReader reader, @NotNull Set<CommandNode<?>> nodes) {
164164
List<CommandNode<?>> options = new ArrayList<>();
165165
List<String> exceptions = new ArrayList<>();
166-
if (reader.index() != 0) reader.next();
166+
if (reader.index() != 0 && !reader.atEnd()) reader.next();
167167
int beforeIndex = reader.index();
168168
for (CommandNode<?> node : nodes) {
169169
node.parse(reader).match(val -> options.add(node), e -> {
@@ -185,10 +185,11 @@ public boolean hasDescription() {
185185
Set<CommandNode<?>> nodeSet = nodes;
186186
List<String> args = new ArrayList<>();
187187
List<CommandNode<?>> nodeList = new ArrayList<>();
188-
CommandNode<?> node = null;
189-
while (!reader.atEnd()) {
190-
if (nodeSet.isEmpty()) return new BuilderCommand.CurrentNode(Result.error(Collections.emptyList()), nodeList, args, true);
191-
Result<BuilderCommand.ApplicableNode, List<String>> parseResult = checkApplicable(reader, nodeSet);
188+
CommandNode<?> node;
189+
do {
190+
if (nodeSet.isEmpty())
191+
return new CurrentNode(Result.error(Collections.emptyList()), nodeList, args, true);
192+
Result<ApplicableNode, List<String>> parseResult = checkApplicable(reader, nodeSet);
192193
if (parseResult.isError()) {
193194
System.out.println("errors: " + String.join(",", parseResult.unwrapError()));
194195
System.out.println("args is " + String.join(",", args));
@@ -202,8 +203,7 @@ public boolean hasDescription() {
202203
args.add(applicableNode.argument);
203204

204205
if (reader.atEnd() && reader.get() == ' ') args.add("");
205-
}
206-
if (node == null) throw new IllegalArgumentException("reader must not be at end");
206+
} while (!reader.atEnd());
207207
System.out.println("args is " + String.join(",", args));
208208
return new CurrentNode(Result.ok(node), nodeList, args, false);
209209
}

0 commit comments

Comments
 (0)