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
|
||||
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();
|
||||
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");
|
||||
* 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 Boolean consoleAvailable;
|
||||
|
||||
private static final String OPERATING_SYSTEM_NAME = System.getProperty("os.name")
|
||||
.toLowerCase();
|
||||
|
||||
|
|
@ -48,6 +50,15 @@ public abstract class AnsiOutput {
|
|||
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() {
|
||||
return AnsiOutput.enabled;
|
||||
}
|
||||
|
|
@ -115,7 +126,10 @@ public abstract class AnsiOutput {
|
|||
|
||||
private static boolean detectIfEnabled() {
|
||||
try {
|
||||
if (System.console() == null) {
|
||||
if (Boolean.FALSE.equals(consoleAvailable)) {
|
||||
return false;
|
||||
}
|
||||
if ((consoleAvailable == null) && (System.console() == null)) {
|
||||
return false;
|
||||
}
|
||||
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");
|
||||
* 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");
|
||||
AnsiOutput.setEnabled(Enum.valueOf(Enabled.class, enabled.toUpperCase()));
|
||||
}
|
||||
|
||||
if (resolver.containsProperty("console-available")) {
|
||||
AnsiOutput.setConsoleAvailable(resolver.getProperty("console-available",
|
||||
Boolean.class));
|
||||
}
|
||||
}
|
||||
|
||||
@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");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -71,7 +71,7 @@ public class AnsiOutputApplicationListenerTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void disabledViaApplcationProperties() throws Exception {
|
||||
public void disabledViaApplicationProperties() throws Exception {
|
||||
ConfigurableEnvironment environment = new StandardEnvironment();
|
||||
EnvironmentTestUtils.addEnvironment(environment, "spring.config.name:ansi");
|
||||
SpringApplication application = new SpringApplication(Config.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue