Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
openSUSE:Factory:Rebuild
groovy18
groovy18-jansi.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File groovy18-jansi.patch of Package groovy18
diff -urEbwB groovy-core-GROOVY_1_8_9/src/main/org/codehaus/groovy/tools/shell/IO.java groovy-core-GROOVY_1_8_9.new/src/main/org/codehaus/groovy/tools/shell/IO.java --- groovy-core-GROOVY_1_8_9/src/main/org/codehaus/groovy/tools/shell/IO.java 2013-02-15 09:42:29.000000000 +0100 +++ groovy-core-GROOVY_1_8_9.new/src/main/org/codehaus/groovy/tools/shell/IO.java 2022-05-12 14:22:46.063512048 +0200 @@ -23,8 +23,8 @@ import java.io.PrintWriter; import java.io.Reader; +import org.codehaus.groovy.runtime.InvokerHelper; import org.codehaus.groovy.tools.shell.util.Preferences; -import org.fusesource.jansi.AnsiRenderWriter; /** * Container for input/output handles. @@ -34,6 +34,8 @@ */ public class IO { + private static final String ANSI_RENDER_WRITER = "org.fusesource.jansi.AnsiRenderWriter"; + /** Raw input stream. */ public final InputStream inputStream; @@ -53,6 +55,11 @@ public final PrintWriter err; /** + * Whether ansi support is available + */ + public final boolean ansiSupported; + + /** * Construct a new IO container. */ public IO(final InputStream inputStream, final OutputStream outputStream, final OutputStream errorStream) { @@ -65,8 +72,36 @@ this.errorStream = errorStream; this.in = new InputStreamReader(inputStream); - this.out = new AnsiRenderWriter(outputStream, true); - this.err = new AnsiRenderWriter(errorStream, true); + boolean ansiSupported = false; + try { + Class.forName(ANSI_RENDER_WRITER, false, IO.class.getClassLoader()); + ansiSupported = true; + } catch (ClassNotFoundException ignore) { + } + this.ansiSupported = ansiSupported; + PrintWriter out = null; + PrintWriter err = null; + if (ansiSupported) { + out = tryConstructRenderWriter(outputStream); + err = tryConstructRenderWriter(errorStream); + } + if (out == null) { + out = new PrintWriter(outputStream, true); + } + if (err == null) { + err = new PrintWriter(errorStream, true); + } + this.out = out; + this.err = err; + } + + protected PrintWriter tryConstructRenderWriter(OutputStream stream) { + // load via reflection to avoid hard-coded dependency on jansi jar + try { + return (PrintWriter) InvokerHelper.invokeConstructorOf(ANSI_RENDER_WRITER, new Object[]{stream, true}); + } catch (ClassNotFoundException ignore) { + return null; + } } /** @@ -78,8 +113,6 @@ /** * Set the verbosity level. - * - * @param verbosity */ public void setVerbosity(final Verbosity verbosity) { assert verbosity != null; diff -urEbwB groovy-core-GROOVY_1_8_9/src/main/org/codehaus/groovy/tools/shell/util/Logger.java groovy-core-GROOVY_1_8_9.new/src/main/org/codehaus/groovy/tools/shell/util/Logger.java --- groovy-core-GROOVY_1_8_9/src/main/org/codehaus/groovy/tools/shell/util/Logger.java 2013-02-15 09:42:29.000000000 +0100 +++ groovy-core-GROOVY_1_8_9.new/src/main/org/codehaus/groovy/tools/shell/util/Logger.java 2022-05-12 14:03:06.980193451 +0200 @@ -56,13 +56,12 @@ } } - Color color = GREEN; - if (WARN.equals(level) || ERROR.equals(level)) { - color = RED; + if (io.ansiSupported) { + logWithAnsi(level, msg); + } else { + logDefault(level, msg); } - io.out.println(ansi().a(INTENSITY_BOLD).a(color).a(level).reset().a(" [").a(name).a("] ").a(msg)); - if (cause != null) { cause.printStackTrace(io.out); } @@ -74,6 +73,18 @@ } } + private void logDefault(String level, Object msg) { + io.out.println(level + " [" + name + "] " + msg); + } + + private void logWithAnsi(String level, Object msg) { + Color color = GREEN; + if (WARN.equals(level) || ERROR.equals(level)) { + color = RED; + } + io.out.println(ansi().a(INTENSITY_BOLD).fg(color).a(level).reset().a(" [").a(name).a("] ").a(msg)); + } + // // Level helpers //
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor