X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fbin%2Fargparser%2FBootstrapArgs.java;h=51f8147a141078029f7938e28dff4db5bb5c93c4;hb=3dcec29e9be7607122fb981050ff2198cef2a746;hp=e1ad1d71c3afc7451a71a36cd761c0de6cf19f5e;hpb=d6e308f41ea1bc57434911e47ac01a19f76e8895;p=jalview.git diff --git a/src/jalview/bin/argparser/BootstrapArgs.java b/src/jalview/bin/argparser/BootstrapArgs.java index e1ad1d7..51f8147 100644 --- a/src/jalview/bin/argparser/BootstrapArgs.java +++ b/src/jalview/bin/argparser/BootstrapArgs.java @@ -1,9 +1,30 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.bin.argparser; 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; @@ -27,6 +48,8 @@ public class BootstrapArgs private Set argsTypes = new HashSet<>(); + private boolean outputToStdout = false; + public static BootstrapArgs getBootstrapArgs(String[] args) { List argList = new ArrayList<>(Arrays.asList(args)); @@ -52,7 +75,7 @@ public class BootstrapArgs { if (argFiles.contains(inArgFile)) { - System.err.println( + jalview.bin.Console.errPrintln( "Looped argfiles detected: '" + inArgFile.getPath() + "'"); return; } @@ -108,9 +131,22 @@ public class BootstrapArgs } } - if (ArgParser.argMap.containsKey(argName) && val == null) + // after all other args, look for Opt.PREFIX args if still not found + if (!ArgParser.argMap.containsKey(argName)) { - val = "true"; + 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; + } + } } Arg a = ArgParser.argMap.get(argName); @@ -124,16 +160,38 @@ public class BootstrapArgs argsOptions.add(opt); } } - Type t = a.getType(); - if (!argsTypes.contains(t)) + for (Type t : a.getTypes()) { - argsTypes.add(t); + if (!argsTypes.contains(t)) + { + argsTypes.add(t); + } } } if (a == null || !a.hasOption(Opt.BOOTSTRAP)) { - // not a valid bootstrap arg + // not a bootstrap arg + + // make a check for an output going to stdout + if (a != null && a.hasOption(Opt.OUTPUTFILE) + && a.hasOption(Opt.STDOUT)) + { + if (val == null && i + 1 < args.size()) + { + val = args.get(i + 1); + } + if (val.startsWith("[") && val.indexOf(']') > 0) + { + val = val.substring(val.indexOf(']') + 1); + } + + if (ArgParser.STDOUTFILENAME.equals(val)) + { + this.outputToStdout = true; + } + } + continue; } @@ -169,10 +227,22 @@ public class BootstrapArgs } else { + if (val == null) + { + val = "true"; + } + add(a, type, val); } } } + + // if in an argfile, remove it from the hashset so it can be re-used in + // another argfile + if (inArgFile != null) + { + argFiles.remove(inArgFile); + } } public boolean contains(Arg a) @@ -251,7 +321,7 @@ public class BootstrapArgs private void add(Arg a, Type t, String s) { List> l = getOrCreateList(a); - if (a.hasOption(Opt.MULTI) || l.size() == 0) + if (a.hasOption(Opt.MULTIVALUE) || l.size() == 0) { l.add(entry(t, s)); } @@ -260,7 +330,7 @@ public class BootstrapArgs private void addAll(Arg a, Type t, List al) { List> l = getOrCreateList(a); - if (a.hasOption(Opt.MULTI)) + if (a.hasOption(Opt.MULTIVALUE)) { for (String s : al) { @@ -343,7 +413,7 @@ public class BootstrapArgs } else if (this.contains(Arg.HEADLESS)) { - // --headless, --noheadless specified => use value + // --headless has been specified on the command line => headless isHeadless = this.getBoolean(Arg.HEADLESS); } else if (this.argsHaveOption(Opt.OUTPUTFILE)) @@ -354,4 +424,9 @@ public class BootstrapArgs } return isHeadless; } + + public boolean outputToStdout() + { + return this.outputToStdout; + } }