Commit b36fe2cb authored by Andy Wilkinson's avatar Andy Wilkinson

Cache outcome of checking to see if host supports ANSI output

Closes gh-4510
parent 8dc3b71c
...@@ -30,6 +30,8 @@ public abstract class AnsiOutput { ...@@ -30,6 +30,8 @@ public abstract class AnsiOutput {
private static Enabled enabled = Enabled.DETECT; private static Enabled enabled = Enabled.DETECT;
private static Boolean ansiCapable;
private static final String OPERATING_SYSTEM_NAME = System.getProperty("os.name") private static final String OPERATING_SYSTEM_NAME = System.getProperty("os.name")
.toLowerCase(); .toLowerCase();
...@@ -108,12 +110,19 @@ public abstract class AnsiOutput { ...@@ -108,12 +110,19 @@ public abstract class AnsiOutput {
private static boolean isEnabled() { private static boolean isEnabled() {
if (enabled == Enabled.DETECT) { if (enabled == Enabled.DETECT) {
return detectIfEnabled(); return detectIfAnsiCapable();
} }
return enabled == Enabled.ALWAYS; return enabled == Enabled.ALWAYS;
} }
private static boolean detectIfEnabled() { private static boolean detectIfAnsiCapable() {
if (ansiCapable == null) {
ansiCapable = doDetectIfAnsiCapable();
}
return ansiCapable;
}
private static boolean doDetectIfAnsiCapable() {
try { try {
if (System.console() == null) { if (System.console() == null) {
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment