From d9439d64822a2617fe8416c4ab4ecd7fea929402 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 10 Jun 2017 15:13:15 +0300 Subject: [PATCH] =?UTF-8?q?Zond:=20=D0=BF=D1=80=D0=BE=D0=BA=D1=81=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20SysOut/SysErr=20?= =?UTF-8?q?=D0=B8=20SysIn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zond/build.gradle | 2 +- zond/src/main/java/asys/zond/Main.java | 57 ++++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/zond/build.gradle b/zond/build.gradle index 6748cd3..0f4e267 100644 --- a/zond/build.gradle +++ b/zond/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.2-SNAPSHOT' +version = '0.3-SNAPSHOT' apply plugin: 'application' diff --git a/zond/src/main/java/asys/zond/Main.java b/zond/src/main/java/asys/zond/Main.java index 581f6e2..67ebdee 100644 --- a/zond/src/main/java/asys/zond/Main.java +++ b/zond/src/main/java/asys/zond/Main.java @@ -64,8 +64,11 @@ public class Main { String cmdLine = Arrays.stream(args).collect(Collectors.joining(" ")); CommandLine commandLine = CommandLine.parse(cmdLine); DefaultExecutor executor = new DefaultExecutor(); - executor.setExitValue(1); - executor.setStreamHandler(new PumpStreamHandler(System.out, System.err, System.in)); + + PrintStream proxySysOut = new ProxySysOut(System.err); + InputStream proxySysIn = new ProxySysIn(); + + executor.setStreamHandler(new PumpStreamHandler(proxySysOut, proxySysOut, proxySysIn)); int resultCode = 0; try { @@ -99,7 +102,8 @@ public class Main { } public static void log(String message){ - System.out.println("[ASys Zond] " + message); + System.out.println(Ansi.ansi().bg(Color.BLUE).fg(Color.WHITE) + .a("[ASys Zond] ").a(message).reset()); } public static void startReconnect() { @@ -123,4 +127,51 @@ public class Main { tryConnect = 0; } } + + private static class ProxySysOut extends PrintStream { + final byte[] prefix = Ansi.ansi().bg(Color.YELLOW).fg(Color.BLACK).boldOff().toString().getBytes(); + final byte[] suffix = Ansi.ansi().reset().toString().getBytes(); + + ProxySysOut(OutputStream out) { + super(out); + } + + @Override + public void write(byte[] buf, int off, int len) { + super.write(prefix, 0, prefix.length); + super.write(buf, off, len); + super.write(suffix, 0, suffix.length); + } + + @Override + public void write(int b) { + super.write(prefix, 0, prefix.length); + super.write(b); + super.write(suffix, 0, suffix.length); + } + + @Override + public void write(byte[] b) throws IOException { + super.write(prefix, 0, prefix.length); + super.write(b); + super.write(suffix, 0, suffix.length); + } + } + + private static class ProxySysIn extends InputStream { + @Override + public int read() throws IOException { + return System.in.read(); + } + + @Override + public int read(byte[] b) throws IOException { + return System.in.read(b); + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + return System.in.read(b, off, len); + } + } }