X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalview.java;fp=src%2Fjalview%2Fbin%2FJalview.java;h=99ae815ac9b23efb4156219023c54a223914eaaf;hb=8b5145f0837eeaeb1f029de179a3715a174dfa09;hp=c6aaaeffd65d28085233e1853472a5fe0cd4d4ae;hpb=969fe2931a113706ddd06888213c8f71f546d325;p=jalview.git diff --git a/src/jalview/bin/Jalview.java b/src/jalview/bin/Jalview.java index c6aaaef..99ae815 100755 --- a/src/jalview/bin/Jalview.java +++ b/src/jalview/bin/Jalview.java @@ -40,6 +40,7 @@ import java.security.Policy; import java.util.HashMap; import java.util.Locale; import java.util.Map; +import java.util.Properties; import java.util.Vector; import java.util.logging.ConsoleHandler; import java.util.logging.Level; @@ -61,6 +62,7 @@ import com.threerings.getdown.util.LaunchUtil; //import edu.stanford.ejalbert.launching.IBrowserLaunching; import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; +import jalview.bin.ArgParser.Arg; import jalview.ext.so.SequenceOntology; import jalview.gui.AlignFrame; import jalview.gui.Desktop; @@ -277,30 +279,11 @@ public class Jalview if (!Platform.isJS()) { System.setSecurityManager(null); - - Runtime.getRuntime().addShutdownHook(new Thread() - { - public void run() - { - Console.debug("Running shutdown hook"); - if (QuitHandler.gotQuitResponse() == QResponse.CANCEL_QUIT) - { - // Got to here by a SIGTERM signal. - // Note we will not actually cancel the quit from here -- it's too - // late -- but we can wait for saving files. - Console.debug("Checking for saving files"); - QuitHandler.getQuitResponse(false); - } - else - { - Console.debug("Nothing more to do"); - } - Console.debug("Exiting, bye!"); - // shutdownHook cannot be cancelled, JVM will now halt - } - }); } + // get args needed before proper ArgParser + Map bootstrapArgs = ArgParser.bootstrapArgs(args); + System.out .println("Java version: " + System.getProperty("java.version")); System.out.println("Java Home: " + System.getProperty("java.home")); @@ -329,22 +312,86 @@ public class Jalview System.setProperty("flatlaf.uiScale", "1"); } + // get bootstrap properties (mainly for the logger level) + Properties bootstrapProperties = Cache + .bootstrapProperties(bootstrapArgs.get("props")); + // report Jalview version Cache.loadBuildProperties(true); + // old ArgsParser ArgsParser aparser = new ArgsParser(args); boolean headless = false; - String usrPropsFile = aparser.getValue("props"); - Cache.loadProperties(usrPropsFile); // must do this - // before + try + { + String logLevel = bootstrapArgs.containsKey("debug") ? "DEBUG" : null; + if (logLevel == null && !(bootstrapProperties == null)) + { + logLevel = bootstrapProperties.getProperty(Cache.JALVIEWLOGLEVEL); + } + Console.initLogger(logLevel); + } catch (NoClassDefFoundError error) + { + error.printStackTrace(); + System.out.println("\nEssential logging libraries not found." + + "\nUse: java -classpath \"$PATH_TO_LIB$/*:$PATH_TO_CLASSES$\" jalview.bin.Jalview"); + System.exit(0); + } + + // register SIGTERM listener + Runtime.getRuntime().addShutdownHook(new Thread() + { + public void run() + { + Console.debug("Running shutdown hook"); + if (QuitHandler.gotQuitResponse() == QResponse.CANCEL_QUIT) + { + // Got to here by a SIGTERM signal. + // Note we will not actually cancel the quit from here -- it's too + // late -- but we can wait for saving files. + Console.debug("Checking for saving files"); + QuitHandler.getQuitResponse(false); + } + else + { + Console.debug("Nothing more to do"); + } + Console.debug("Exiting, bye!"); + // shutdownHook cannot be cancelled, JVM will now halt + } + }); + + String usrPropsFile = bootstrapArgs.containsKey("props") + ? bootstrapArgs.get("props") + : aparser.getValue("props"); + Cache.loadProperties(usrPropsFile); if (usrPropsFile != null) { System.out.println( "CMD [-props " + usrPropsFile + "] executed successfully!"); } + // new ArgParser + ArgParser argparser = new ArgParser(args); + + if (argparser.isSet(Arg.HEADLESS)) + headless = argparser.getBool(Arg.HEADLESS); + boolean commandsSuccess = Commands.processArgs(argparser, headless); + if (commandsSuccess) + { + Console.info("Successfully completed commands"); + if (headless) + System.exit(0); + } + else + { + Console.warn("Error when running commands"); + if (headless) + System.exit(1); + } + if (!Platform.isJS()) /** * Java only @@ -352,13 +399,18 @@ public class Jalview * @j2sIgnore */ { + if (argparser.isSet(Arg.HEADLESS)) + { + headless = argparser.getBool(Arg.HEADLESS); + } + if (aparser.contains("help") || aparser.contains("h")) { showUsage(); System.exit(0); } - if (aparser.contains("nodisplay") || aparser.contains("nogui") - || aparser.contains("headless")) + if (headless || aparser.contains("nodisplay") + || aparser.contains("nogui") || aparser.contains("headless")) { System.setProperty("java.awt.headless", "true"); headless = true; @@ -425,7 +477,6 @@ public class Jalview + "\nUse: java -classpath \"$PATH_TO_LIB$/*:$PATH_TO_CLASSES$\" jalview.bin.Jalview"); System.exit(0); } - desktop = null; setLookAndFeel();