diff --git a/G-Earth/src/main/java/gearth/ui/extensions/executer/ExtensionRunner.java b/G-Earth/src/main/java/gearth/ui/extensions/executer/ExtensionRunner.java index 229cad4..4d1f1ee 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/executer/ExtensionRunner.java +++ b/G-Earth/src/main/java/gearth/ui/extensions/executer/ExtensionRunner.java @@ -5,6 +5,8 @@ package gearth.ui.extensions.executer; */ public interface ExtensionRunner { + String SHOW_EXTENSIONS_LOG = "--log-extensions"; + void runAllExtensions(int port); void installAndRunExtension(String path, int port); diff --git a/G-Earth/src/main/java/gearth/ui/extensions/executer/NormalExtensionRunner.java b/G-Earth/src/main/java/gearth/ui/extensions/executer/NormalExtensionRunner.java index 2d9bcfe..6ee4a87 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/executer/NormalExtensionRunner.java +++ b/G-Earth/src/main/java/gearth/ui/extensions/executer/NormalExtensionRunner.java @@ -2,9 +2,12 @@ package gearth.ui.extensions.executer; import gearth.Main; import gearth.ui.extensions.authentication.Authenticator; +import org.omg.CORBA.Environment; +import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStreamReader; import java.net.URISyntaxException; import java.nio.file.*; import java.util.Arrays; @@ -88,7 +91,50 @@ public class NormalExtensionRunner implements ExtensionRunner { .replace("{port}", port+"") .replace("{filename}", filename) .replace("{cookie}", Authenticator.generateCookieForExtension(filename)); - Runtime.getRuntime().exec(execCommand); + Process proc = Runtime.getRuntime().exec(execCommand); + + + + + if (Main.hasFlag(ExtensionRunner.SHOW_EXTENSIONS_LOG)) { + String sep = "" + System.lineSeparator(); + synchronized (System.out) { + System.out.println(path + sep + "Launching" + sep + "----------" + sep); + } + + BufferedReader stdInput = new BufferedReader(new + InputStreamReader(proc.getInputStream())); + + new Thread(() -> { + try { + String line; + while((line = stdInput.readLine()) != null) { + synchronized (System.out) { + System.out.println(path + sep + "Output" + sep + line + sep + "----------" + sep); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + }).start(); + + BufferedReader stdError = new BufferedReader(new + InputStreamReader(proc.getErrorStream())); + + new Thread(() -> { + try { + String line; + while((line = stdError.readLine()) != null) { + synchronized (System.out) { + System.out.println(path + sep + "Error" + sep + line + sep + "----------" + sep); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + }).start(); + + } } catch (IOException e) { e.printStackTrace(); }