X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2Fargparser%2FBootstrapArgs.java;h=4b7b180a799d8f83ff90fdd53a7f152b01e45459;hb=65ed1da9a1710a9ce132c7edfce54955dc1ddf99;hp=a6bad2449158549f4a5a9288100aaed77a433b5d;hpb=4fd4608b88401dbb1a86a29f8d607c7481145e27;p=jalview.git diff --git a/src/jalview/bin/argparser/BootstrapArgs.java b/src/jalview/bin/argparser/BootstrapArgs.java index a6bad24..4b7b180 100644 --- a/src/jalview/bin/argparser/BootstrapArgs.java +++ b/src/jalview/bin/argparser/BootstrapArgs.java @@ -4,6 +4,7 @@ import java.io.File; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; +import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -25,6 +26,8 @@ public class BootstrapArgs private Set argsOptions = new HashSet<>(); + private Set argsTypes = new HashSet<>(); + public static BootstrapArgs getBootstrapArgs(String[] args) { List argList = new ArrayList<>(Arrays.asList(args)); @@ -106,6 +109,24 @@ public class BootstrapArgs } } + // after all other args, look for Opt.PREFIX args if still not found + if (!ArgParser.argMap.containsKey(argName)) + { + for (Arg potentialArg : EnumSet.allOf(Arg.class)) + { + if (potentialArg.hasOption(Opt.PREFIXKEV) && argName != null + && argName.startsWith(potentialArg.getName()) + && val != null) + { + val = argName.substring(potentialArg.getName().length()) + + ArgParser.EQUALS + val; + argName = argName.substring(0, + potentialArg.getName().length()); + break; + } + } + } + if (ArgParser.argMap.containsKey(argName) && val == null) { val = "true"; @@ -122,6 +143,11 @@ public class BootstrapArgs argsOptions.add(opt); } } + Type t = a.getType(); + if (!argsTypes.contains(t)) + { + argsTypes.add(t); + } } if (a == null || !a.hasOption(Opt.BOOTSTRAP)) @@ -275,7 +301,7 @@ public class BootstrapArgs * Retrieves the first value even if MULTI. * A convenience for non-MULTI args. */ - public String get(Arg a) + public String getValue(Arg a) { if (!bootstrapArgMap.containsKey(a)) return null; @@ -287,7 +313,7 @@ public class BootstrapArgs { if (!bootstrapArgMap.containsKey(a)) return d; - return Boolean.parseBoolean(get(a)); + return Boolean.parseBoolean(getValue(a)); } public boolean getBoolean(Arg a) @@ -298,7 +324,7 @@ public class BootstrapArgs } if (bootstrapArgMap.containsKey(a)) { - return Boolean.parseBoolean(get(a)); + return Boolean.parseBoolean(getValue(a)); } else { @@ -310,4 +336,41 @@ public class BootstrapArgs { return argsOptions.contains(opt); } + + public boolean argsHaveType(Type type) + { + return argsTypes.contains(type); + } + + public boolean isHeadless() + { + boolean isHeadless = false; + if (this.argsHaveType(Type.HELP)) + { + // --help, --help-all, ... specified => headless + isHeadless = true; + } + else if (this.contains(Arg.VERSION)) + { + // --version specified => headless + isHeadless = true; + } + else if (this.contains(Arg.GUI)) + { + // --gui specified => forced NOT headless + isHeadless = !this.getBoolean(Arg.GUI); + } + else if (this.contains(Arg.HEADLESS)) + { + // --headless, --noheadless specified => use value + isHeadless = this.getBoolean(Arg.HEADLESS); + } + else if (this.argsHaveOption(Opt.OUTPUTFILE)) + { + // --output file.fa, --image pic.png, --structureimage struct.png => + // assume headless unless above has been already specified + isHeadless = true; + } + return isHeadless; + } }