From: Ben Soares Date: Sat, 20 May 2023 09:05:16 +0000 (+0100) Subject: JAL-4160 JAL-3830 Improve jalview.bin.Launcher for launcher script launch with new... X-Git-Tag: Release_2_11_3_0~14^2~32 X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=1828f012a09cc00f8748fd9ee5b53af0779a8945 JAL-4160 JAL-3830 Improve jalview.bin.Launcher for launcher script launch with new ArgParser --- diff --git a/src/jalview/bin/Launcher.java b/src/jalview/bin/Launcher.java index 61b87e3..c5268fa 100644 --- a/src/jalview/bin/Launcher.java +++ b/src/jalview/bin/Launcher.java @@ -90,9 +90,34 @@ public class Launcher String jvmmempc = null; String jvmmemmax = null; + boolean debug = false; + boolean help = false; + boolean quiet = false; + boolean launcherstop = false; + boolean launcherprint = false; ArrayList arguments = new ArrayList<>(); for (String arg : args) { + if (arg.equals("--debug")) + { + debug = true; + } + if (arg.equals("--quiet")) + { + quiet = true; + } + if (arg.equals("--help") || arg.startsWith("--help-")) + { + help = true; + } + if (arg.equals("--launcherprint")) + { + launcherprint = true; + } + if (arg.equals("--launcherstop")) + { + launcherstop = true; + } // jvmmempc and jvmmemmax args used to set memory and are not passed on to // startClass if (arg.startsWith( @@ -146,7 +171,7 @@ public class Launcher } } - // add memory setting if not specified + // add these settings if not already specified boolean memSet = false; boolean dockIcon = false; boolean dockName = false; @@ -208,8 +233,11 @@ public class Launcher String scalePropertyArg = HiDPISetting.getScalePropertyArg(); if (scalePropertyArg != null) { - System.out.println("Running " + startClass + " with scale setting " - + scalePropertyArg); + if (debug && !quiet) + { + System.out.println("Running " + startClass + " with scale setting " + + scalePropertyArg); + } command.add(scalePropertyArg); } @@ -218,19 +246,28 @@ public class Launcher final ProcessBuilder builder = new ProcessBuilder(command); - if (Boolean.parseBoolean(System.getProperty("launcherprint", "false"))) + if (!quiet && (Boolean + .parseBoolean(System.getProperty("launcherprint", "false")) + || (debug && launcherprint))) { System.out.println( "LAUNCHER COMMAND: " + String.join(" ", builder.command())); } - System.out.println("Running " + startClass + " with " - + (memSetting == null ? "no memory setting" - : ("memory setting " + memSetting))); + if (debug && !quiet) + { + System.out.println("Running " + startClass + " with " + + (memSetting == null ? "no memory setting" + : ("memory setting " + memSetting))); + } - if (Boolean.parseBoolean(System.getProperty("launcherstop", "false"))) + if (Boolean.parseBoolean(System.getProperty("launcherstop", "false")) + || (debug && launcherstop)) { - System.out.println( - "System property 'launcherstop' is set and not 'false'. Exiting."); + if (!quiet) + { + System.out.println( + "System property 'launcherstop' is set and not 'false'. Exiting."); + } System.exit(0); } try @@ -242,7 +279,7 @@ public class Launcher { if (e.getMessage().toLowerCase(Locale.ROOT).contains("memory")) { - System.out.println("Caught a memory exception: " + e.getMessage()); + System.err.println("Caught a memory exception: " + e.getMessage()); // Probably the "Cannot allocate memory" error, try without the memory // setting ArrayList commandNoMem = new ArrayList<>(); @@ -255,7 +292,7 @@ public class Launcher } final ProcessBuilder builderNoMem = new ProcessBuilder( commandNoMem); - System.out.println("Command without memory setting: " + System.err.println("Command without memory setting: " + String.join(" ", builderNoMem.command())); try {