Support ANSI color from gradle bootRun
Update the BootRunTask to record the state of the System.console() so that it can be picked up later by AnsiOutput. Fixes gh-747
This commit is contained in:
parent
ba2ea301f1
commit
d8308cbf45
|
|
@ -54,6 +54,10 @@ public class BootRunTask extends JavaExec {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exec() {
|
public void exec() {
|
||||||
|
if(System.console() != null) {
|
||||||
|
// Record that the console is available here for AnsiOutput to detect later
|
||||||
|
this.getEnvironment().put("spring.output.ansi.console-available", true);
|
||||||
|
}
|
||||||
addResourcesIfNecessary();
|
addResourcesIfNecessary();
|
||||||
super.exec();
|
super.exec();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2013 the original author or authors.
|
* Copyright 2012-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -30,6 +30,8 @@ public abstract class AnsiOutput {
|
||||||
|
|
||||||
private static Enabled enabled = Enabled.DETECT;
|
private static Enabled enabled = Enabled.DETECT;
|
||||||
|
|
||||||
|
private static Boolean consoleAvailable;
|
||||||
|
|
||||||
private static final String OPERATING_SYSTEM_NAME = System.getProperty("os.name")
|
private static final String OPERATING_SYSTEM_NAME = System.getProperty("os.name")
|
||||||
.toLowerCase();
|
.toLowerCase();
|
||||||
|
|
||||||
|
|
@ -48,6 +50,15 @@ public abstract class AnsiOutput {
|
||||||
AnsiOutput.enabled = enabled;
|
AnsiOutput.enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets if the System.console() is know to be available.
|
||||||
|
* @param consoleAvailable if the console is known to be available or {@code null} to
|
||||||
|
* use standard detection logic.
|
||||||
|
*/
|
||||||
|
public static void setConsoleAvailable(Boolean consoleAvailable) {
|
||||||
|
AnsiOutput.consoleAvailable = consoleAvailable;
|
||||||
|
}
|
||||||
|
|
||||||
static Enabled getEnabled() {
|
static Enabled getEnabled() {
|
||||||
return AnsiOutput.enabled;
|
return AnsiOutput.enabled;
|
||||||
}
|
}
|
||||||
|
|
@ -115,7 +126,10 @@ public abstract class AnsiOutput {
|
||||||
|
|
||||||
private static boolean detectIfEnabled() {
|
private static boolean detectIfEnabled() {
|
||||||
try {
|
try {
|
||||||
if (System.console() == null) {
|
if (Boolean.FALSE.equals(consoleAvailable)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ((consoleAvailable == null) && (System.console() == null)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !(OPERATING_SYSTEM_NAME.indexOf("win") >= 0);
|
return !(OPERATING_SYSTEM_NAME.indexOf("win") >= 0);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2014 the original author or authors.
|
* Copyright 2012-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -42,6 +42,11 @@ public class AnsiOutputApplicationListener implements
|
||||||
String enabled = resolver.getProperty("enabled");
|
String enabled = resolver.getProperty("enabled");
|
||||||
AnsiOutput.setEnabled(Enum.valueOf(Enabled.class, enabled.toUpperCase()));
|
AnsiOutput.setEnabled(Enum.valueOf(Enabled.class, enabled.toUpperCase()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (resolver.containsProperty("console-available")) {
|
||||||
|
AnsiOutput.setConsoleAvailable(resolver.getProperty("console-available",
|
||||||
|
Boolean.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2014 the original author or authors.
|
* Copyright 2012-2015 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -71,7 +71,7 @@ public class AnsiOutputApplicationListenerTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void disabledViaApplcationProperties() throws Exception {
|
public void disabledViaApplicationProperties() throws Exception {
|
||||||
ConfigurableEnvironment environment = new StandardEnvironment();
|
ConfigurableEnvironment environment = new StandardEnvironment();
|
||||||
EnvironmentTestUtils.addEnvironment(environment, "spring.config.name:ansi");
|
EnvironmentTestUtils.addEnvironment(environment, "spring.config.name:ansi");
|
||||||
SpringApplication application = new SpringApplication(Config.class);
|
SpringApplication application = new SpringApplication(Config.class);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue