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;
+ }
}