import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.io.OutputStreamWriter;
+import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URI;
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
import jalview.bin.ArgParser.Arg;
+import jalview.bin.ArgParser.BootstrapArgs;
import jalview.ext.so.SequenceOntology;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
private Desktop desktop;
+ protected Commands cmds;
+
public static AlignFrame currentAlignFrame;
static
}
// get args needed before proper ArgParser
- Map<String, String> bootstrapArgs = ArgParser.bootstrapArgs(args);
+ BootstrapArgs bootstrapArgs = BootstrapArgs.getBootstrapArgs(args);
+
+ if (!Platform.isJS())
+ {
+ // are we being --quiet ?
+ if (bootstrapArgs.contains(Arg.QUIET))
+ {
+ OutputStream devNull = new OutputStream()
+ {
+ @Override
+ public void write(int b)
+ {
+ // DO NOTHING
+ }
+ };
+ System.setOut(new PrintStream(devNull));
+ // redirecting stderr not working
+ if (bootstrapArgs.getList(Arg.QUIET).size() > 1)
+ {
+ System.setErr(new PrintStream(devNull));
+ }
+ }
+ }
System.out
.println("Java version: " + System.getProperty("java.version"));
// get bootstrap properties (mainly for the logger level)
Properties bootstrapProperties = Cache
- .bootstrapProperties(bootstrapArgs.get("props"));
+ .bootstrapProperties(bootstrapArgs.get(Arg.PROPS));
// report Jalview version
Cache.loadBuildProperties(true);
// old ArgsParser
ArgsParser aparser = new ArgsParser(args);
+ // old
boolean headless = false;
+ // new
+ boolean headlessArg = false;
try
{
- String logLevel = bootstrapArgs.containsKey("debug") ? "DEBUG" : null;
+ String logLevel = bootstrapArgs.contains(Arg.DEBUG) ? "DEBUG" : null;
if (logLevel == null && !(bootstrapProperties == null))
{
logLevel = bootstrapProperties.getProperty(Cache.JALVIEWLOGLEVEL);
}
});
- String usrPropsFile = bootstrapArgs.containsKey("props")
- ? bootstrapArgs.get("props")
+ String usrPropsFile = bootstrapArgs.contains(Arg.PROPS)
+ ? bootstrapArgs.get(Arg.PROPS)
: aparser.getValue("props");
Cache.loadProperties(usrPropsFile);
if (usrPropsFile != null)
}
// new ArgParser
- ArgParser argparser = new ArgParser(args);
-
- if (argparser.isSet(Arg.HEADLESS))
- headless = argparser.getBool(Arg.HEADLESS);
+ ArgParser argparser;
+ // --argfile=... -- OVERRIDES ALL NON-BOOTSTRAP ARGS
+ if (bootstrapArgs.contains(Arg.ARGFILE))
+ {
+ argparser = ArgParser
+ .parseArgFiles(bootstrapArgs.getList(Arg.ARGFILE));
+ }
+ else
+ {
+ argparser = new ArgParser(args);
+ }
if (!Platform.isJS())
/**
* @j2sIgnore
*/
{
- if (argparser.isSet(Arg.HEADLESS))
+ if (aparser.contains("help") || aparser.contains("h")
+ || argparser.getBool(Arg.HELP))
{
- headless = argparser.getBool(Arg.HEADLESS);
+ showUsage();
+ System.exit(0);
}
- if (aparser.contains("help") || aparser.contains("h"))
+ if (bootstrapArgs.contains(Arg.HEADLESS))
{
- showUsage();
- System.exit(0);
+ System.setProperty("java.awt.headless", "true");
+ // new
+ headlessArg = argparser.getBool(Arg.HEADLESS);
}
- if (headless || aparser.contains("nodisplay")
- || aparser.contains("nogui") || aparser.contains("headless"))
+ if (aparser.contains("nodisplay") || aparser.contains("nogui")
+ || aparser.contains("headless"))
{
System.setProperty("java.awt.headless", "true");
+ // old
headless = true;
}
// anything else!
}
desktop = null;
- setLookAndFeel();
+ if (!(headless || headlessArg))
+ setLookAndFeel();
/*
* configure 'full' SO model if preferences say to, else use the default (full SO)
SequenceOntologyFactory.setInstance(new SequenceOntology());
}
- if (!headless)
+ if (!(headless || headlessArg))
{
Desktop.nosplash = aparser.contains("nosplash");
desktop = new Desktop();
}
}
// Run Commands from cli
- boolean commandsSuccess = Commands.processArgs(argparser, headless);
+ cmds = new Commands(argparser, headlessArg);
+ boolean commandsSuccess = cmds.argsWereParsed();
if (commandsSuccess)
{
Console.info("Successfully completed commands");
- if (headless)
+ if (headlessArg)
+ {
+ System.out.println("#### EXITING");
System.exit(0);
+ }
}
else
{
Console.warn("Error when running commands");
- if (headless)
+ if (headlessArg)
System.exit(1);
}
if (cs != null)
{
System.out.println(
- "CMD [-color " + data + "] executed successfully!");
+ "CMD [-colour " + data + "] executed successfully!");
}
af.changeColour(cs);
}
// ////////////////////
if (!Platform.isJS() && !headless && file == null
- && Cache.getDefault("SHOW_STARTUP_FILE", true))
+ && Cache.getDefault("SHOW_STARTUP_FILE", true)
+ && !cmds.commandArgsProvided())
+ // don't open the startup file if command line args have been processed
+ // (&& !Commands.commandArgsProvided())
/**
* Java only
*
public void quit()
{
// System.exit will run the shutdownHook first
+ System.out.println("Quitting now. Bye!");
System.exit(0);
}
{
Jalview.currentAlignFrame = currentAlignFrame;
}
+
+ protected Commands getCommands()
+ {
+ return cmds;
+ }
}