Merge pull request #614 from tkruse/groovy-7290
GROOVY-7290: Groovysh: More robust and eager-failing command detection
diff --git a/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Shell.groovy b/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Shell.groovy
index 2a1d508..87619a7 100644
--- a/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Shell.groovy
+++ b/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Shell.groovy
@@ -69,16 +69,18 @@
// then ask the registry for the command for a given line?
//
- List<String> args = CommandArgumentParser.parseLine(line, parsedArgs == null ? 1 : -1)
+ // command id is first word, unless empty
+ Command command = null;
+ List<String> linetokens = line.trim().tokenize()
+ assert linetokens.size() > 0
- assert args.size() > 0
-
- Command command = registry.find(args[0])
-
- if (command != null && args.size() > 1 && parsedArgs != null) {
- parsedArgs.addAll(args[1..-1])
+ if (linetokens[0].length() > 0) {
+ command = registry.find(linetokens[0])
+ if (command != null && linetokens.size() > 1 && parsedArgs != null) {
+ List<String> args = CommandArgumentParser.parseLine(line, parsedArgs == null ? 1 : -1)
+ parsedArgs.addAll(args[1..-1])
+ }
}
-
return command
}