summaryrefslogtreecommitdiff
path: root/src/cz/crcs/ectester/common/cli/TreeCommandLine.java
diff options
context:
space:
mode:
authorJ08nY2017-11-23 01:32:41 +0100
committerJ08nY2017-11-23 01:32:41 +0100
commit0fdfe31112924f51ca503c0ec0fff62ec20403c1 (patch)
tree35431fa7a6e96ce9ad8132eca3340048632699bf /src/cz/crcs/ectester/common/cli/TreeCommandLine.java
parentc668d220aa8a2505de701a57803040a7def291b0 (diff)
downloadECTester-0fdfe31112924f51ca503c0ec0fff62ec20403c1.tar.gz
ECTester-0fdfe31112924f51ca503c0ec0fff62ec20403c1.tar.zst
ECTester-0fdfe31112924f51ca503c0ec0fff62ec20403c1.zip
Diffstat (limited to 'src/cz/crcs/ectester/common/cli/TreeCommandLine.java')
-rw-r--r--src/cz/crcs/ectester/common/cli/TreeCommandLine.java27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/cz/crcs/ectester/common/cli/TreeCommandLine.java b/src/cz/crcs/ectester/common/cli/TreeCommandLine.java
index 82d1e15..39607dc 100644
--- a/src/cz/crcs/ectester/common/cli/TreeCommandLine.java
+++ b/src/cz/crcs/ectester/common/cli/TreeCommandLine.java
@@ -3,6 +3,7 @@ package cz.crcs.ectester.common.cli;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.ParseException;
+import sun.reflect.generics.tree.Tree;
import java.util.Iterator;
import java.util.List;
@@ -55,11 +56,21 @@ public class TreeCommandLine extends CommandLine {
return cli;
}
+ public int getDepth() {
+ if (next == null) {
+ return 0;
+ }
+ return next.getDepth() + 1;
+ }
+
private <T> T getOption(String opt, BiFunction<CommandLine, String, T> getter, T defaultValue) {
if (opt.contains(".")) {
String[] parts = opt.split("\\.", 2);
if (next != null && parts[0].equals(next.getName())) {
- return getter.apply(next, parts[1]);
+ T result = getter.apply(next, parts[1]);
+ if (result != null)
+ return result;
+ return defaultValue;
}
return defaultValue;
}
@@ -138,11 +149,21 @@ public class TreeCommandLine extends CommandLine {
return cli.getOptions();
}
+ public boolean hasArg(int index) {
+ if (next != null) {
+ return next.hasArg(index);
+ }
+ return Math.abs(index) < cli.getArgs().length;
+ }
+
public String getArg(int index) {
- if (index < 0 || index >= cli.getArgs().length) {
+ if (next != null) {
+ return next.getArg(index);
+ }
+ if (index >= cli.getArgs().length) {
return null;
}
- return cli.getArgs()[index];
+ return index < 0 ? cli.getArgs()[cli.getArgs().length + index] : cli.getArgs()[index];
}
@Override