Browse Source

Merge pull request #2736 from Nowheresly/fix747

* fix747:
  Support ANSI color from gradle bootRun
pull/2238/merge
Phillip Webb 11 years ago
parent
commit
e4aab1cf0d
  1. 4
      spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/run/BootRunTask.java
  2. 18
      spring-boot/src/main/java/org/springframework/boot/ansi/AnsiOutput.java
  3. 7
      spring-boot/src/main/java/org/springframework/boot/context/config/AnsiOutputApplicationListener.java
  4. 4
      spring-boot/src/test/java/org/springframework/boot/context/embedded/config/AnsiOutputApplicationListenerTests.java

4
spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/run/BootRunTask.java

@ -54,6 +54,10 @@ public class BootRunTask extends JavaExec { @@ -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();
}

18
spring-boot/src/main/java/org/springframework/boot/ansi/AnsiOutput.java

@ -1,5 +1,5 @@ @@ -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 { @@ -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 { @@ -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 { @@ -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);

7
spring-boot/src/main/java/org/springframework/boot/context/config/AnsiOutputApplicationListener.java

@ -1,5 +1,5 @@ @@ -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 @@ -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

4
spring-boot/src/test/java/org/springframework/boot/context/embedded/config/AnsiOutputApplicationListenerTests.java

@ -1,5 +1,5 @@ @@ -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 { @@ -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…
Cancel
Save