diff options
| author | J08nY | 2017-11-15 02:31:05 +0100 |
|---|---|---|
| committer | J08nY | 2017-11-15 02:31:05 +0100 |
| commit | 9da5f6ee8db4138b13af6d1d7bef279ed107288d (patch) | |
| tree | 733c9ceae908d2a05d4c6794ccc4dd2771125bc6 /src | |
| parent | 398e1f6ec20d17b0358694d5d3de9e22b791aa5a (diff) | |
| download | ECTester-9da5f6ee8db4138b13af6d1d7bef279ed107288d.tar.gz ECTester-9da5f6ee8db4138b13af6d1d7bef279ed107288d.tar.zst ECTester-9da5f6ee8db4138b13af6d1d7bef279ed107288d.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/cz/crcs/ectester/common/cli/TreeParser.java | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/cz/crcs/ectester/common/cli/TreeParser.java b/src/cz/crcs/ectester/common/cli/TreeParser.java index 079760e..8e7edb4 100644 --- a/src/cz/crcs/ectester/common/cli/TreeParser.java +++ b/src/cz/crcs/ectester/common/cli/TreeParser.java @@ -2,10 +2,7 @@ package cz.crcs.ectester.common.cli; import org.apache.commons.cli.*; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; -import java.util.Properties; +import java.util.*; /** * @author Jan Jancar johny@neuromancer.sk @@ -50,11 +47,27 @@ public class TreeParser implements CommandLineParser { String sub = null; if (args.length != 0) { sub = args[0]; - ParserOptions subparser = parsers.get(sub); - if (subparser != null) { + + List<String> matches = new LinkedList<>(); + String finalSub = sub; + for (Map.Entry<String, ParserOptions> entry : parsers.entrySet()) { + if (entry.getKey().equalsIgnoreCase(finalSub)) { + matches.clear(); + matches.add(finalSub); + break; + } else if (entry.getKey().startsWith(finalSub)) { + matches.add(entry.getKey()); + } + } + + if (matches.size() == 1) { + sub = matches.get(0); + ParserOptions subparser = parsers.get(sub); String[] remainingArgs = new String[args.length - 1]; System.arraycopy(args, 1, remainingArgs, 0, args.length - 1); subCli = subparser.getParser().parse(subparser.getOptions(), remainingArgs, true); + } else if (matches.size() > 1) { + throw new UnrecognizedOptionException("Ambiguous option: " + sub + ", couldn't match. Partially matches: " + String.join(",", matches.toArray(new String[0])) + ".", sub); } } else { if (required) { |
