You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2017/08/27 14:58:21 UTC
[10/12] maven git commit: [MNG-6220] Add CLI options to control color
output Introduce -Dstyle.color=[always|never|auto]
[MNG-6220] Add CLI options to control color output
Introduce -Dstyle.color=[always|never|auto]
Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/785bad69
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/785bad69
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/785bad69
Branch: refs/heads/MNG-6069
Commit: 785bad693c60ad60d7b307af8fab9e9234ff57bd
Parents: f1ed659
Author: rfscholte <rf...@apache.org>
Authored: Tue Aug 15 21:48:57 2017 +0200
Committer: rfscholte <rf...@apache.org>
Committed: Tue Aug 15 21:48:57 2017 +0200
----------------------------------------------------------------------
maven-embedder/pom.xml | 5 ++
.../java/org/apache/maven/cli/MavenCli.java | 28 +++++--
.../java/org/apache/maven/cli/MavenCliTest.java | 86 ++++++++++++++++++--
3 files changed, 107 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven/blob/785bad69/maven-embedder/pom.xml
----------------------------------------------------------------------
diff --git a/maven-embedder/pom.xml b/maven-embedder/pom.xml
index 7bd2650..4b3d097 100644
--- a/maven-embedder/pom.xml
+++ b/maven-embedder/pom.xml
@@ -138,6 +138,11 @@ under the License.
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.fusesource.jansi</groupId>
+ <artifactId>jansi</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
http://git-wip-us.apache.org/repos/asf/maven/blob/785bad69/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
----------------------------------------------------------------------
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 641a2a9..3474fab 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -144,6 +144,8 @@ public class MavenCli
private static final String MVN_MAVEN_CONFIG = ".mvn/maven.config";
+ public static final String STYLE_COLOR_PROPERTY = "style.color";
+
private ClassWorld classWorld;
private LoggerManager plexusLoggerManager;
@@ -472,8 +474,9 @@ public class MavenCli
/**
* configure logging
*/
- private void logging( CliRequest cliRequest )
+ void logging( CliRequest cliRequest )
{
+ // LOG LEVEL
cliRequest.debug = cliRequest.commandLine.hasOption( CLIManager.DEBUG );
cliRequest.quiet = !cliRequest.debug && cliRequest.commandLine.hasOption( CLIManager.QUIET );
cliRequest.showErrors = cliRequest.debug || cliRequest.commandLine.hasOption( CLIManager.ERRORS );
@@ -494,18 +497,33 @@ public class MavenCli
// else fall back to default log level specified in conf
// see https://issues.apache.org/jira/browse/MNG-2570
- if ( cliRequest.commandLine.hasOption( CLIManager.BATCH_MODE ) )
+ // LOG COLOR
+ String styleColor = cliRequest.getUserProperties().getProperty( STYLE_COLOR_PROPERTY, "auto" );
+ if ( "always".equals( styleColor ) )
+ {
+ MessageUtils.setColorEnabled( true );
+ }
+ else if ( "never".equals( styleColor ) )
{
MessageUtils.setColorEnabled( false );
}
-
+ else if ( !"auto".equals( styleColor ) )
+ {
+ throw new IllegalArgumentException( "Invalid color configuration option [" + styleColor
+ + "]. Supported values are (auto|always|never)." );
+ }
+ else if ( cliRequest.commandLine.hasOption( CLIManager.BATCH_MODE )
+ || cliRequest.commandLine.hasOption( CLIManager.LOG_FILE ) )
+ {
+ MessageUtils.setColorEnabled( false );
+ }
+
+ // LOG STREAMS
if ( cliRequest.commandLine.hasOption( CLIManager.LOG_FILE ) )
{
File logFile = new File( cliRequest.commandLine.getOptionValue( CLIManager.LOG_FILE ) );
logFile = resolveFile( logFile, cliRequest.workingDirectory );
- MessageUtils.setColorEnabled( false );
-
// redirect stdout and stderr to file
try
{
http://git-wip-us.apache.org/repos/asf/maven/blob/785bad69/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
----------------------------------------------------------------------
diff --git a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
index 9b480ea..433c949 100644
--- a/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
+++ b/maven-embedder/src/test/java/org/apache/maven/cli/MavenCliTest.java
@@ -19,26 +19,35 @@ package org.apache.maven.cli;
* under the License.
*/
-import junit.framework.TestCase;
-import org.apache.commons.cli.ParseException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
import java.io.File;
+import org.apache.commons.cli.ParseException;
+import org.apache.maven.shared.utils.logging.MessageUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
public class MavenCliTest
- extends TestCase
{
private MavenCli cli;
private String origBasedir;
- protected void setUp()
+ @Before
+ public void setUp()
{
cli = new MavenCli();
origBasedir = System.getProperty( MavenCli.MULTIMODULE_PROJECT_DIRECTORY );
}
- @Override
- protected void tearDown()
+ @After
+ public void tearDown()
throws Exception
{
if ( origBasedir != null )
@@ -49,9 +58,9 @@ public class MavenCliTest
{
System.getProperties().remove( MavenCli.MULTIMODULE_PROJECT_DIRECTORY );
}
- super.tearDown();
}
+ @Test
public void testCalculateDegreeOfConcurrencyWithCoreMultiplier()
{
int cores = Runtime.getRuntime().availableProcessors();
@@ -71,6 +80,7 @@ public class MavenCliTest
}
}
+ @Test
public void testMavenConfig()
throws Exception
{
@@ -90,6 +100,7 @@ public class MavenCliTest
assertEquals( "foobar", request.commandLine.getOptionValue( "builder" ) );
}
+ @Test
public void testMavenConfigInvalid()
throws Exception
{
@@ -120,6 +131,7 @@ public class MavenCliTest
*
* @throws Exception in case of failure.
*/
+ @Test
public void testMVNConfigurationThreadCanBeOverwrittenViaCommandLine()
throws Exception
{
@@ -145,6 +157,7 @@ public class MavenCliTest
*
* @throws Exception
*/
+ @Test
public void testMVNConfigurationDefinedPropertiesCanBeOverwrittenViaCommandLine()
throws Exception
{
@@ -172,6 +185,7 @@ public class MavenCliTest
*
* @throws Exception
*/
+ @Test
public void testMVNConfigurationCLIRepeatedPropertiesLastWins()
throws Exception
{
@@ -199,6 +213,7 @@ public class MavenCliTest
*
* @throws Exception
*/
+ @Test
public void testMVNConfigurationFunkyArguments()
throws Exception
{
@@ -221,4 +236,61 @@ public class MavenCliTest
assertEquals( "-Dpom.xml", request.getCommandLine().getOptionValue( CLIManager.ALTERNATE_POM_FILE ) );
}
+
+ @Test
+ public void testStyleColors()
+ throws Exception
+ {
+ assumeTrue( "ANSI not supported", MessageUtils.isColorEnabled() );
+ CliRequest request;
+
+ MessageUtils.setColorEnabled( true );
+ request = new CliRequest( new String[] { "-B" }, null );
+ cli.cli( request );
+ cli.properties( request );
+ cli.logging( request );
+ assertFalse( MessageUtils.isColorEnabled() );
+
+ MessageUtils.setColorEnabled( true );
+ request = new CliRequest( new String[] { "-l", "target/temp/mvn.log" }, null );
+ cli.cli( request );
+ cli.properties( request );
+ cli.logging( request );
+ assertFalse( MessageUtils.isColorEnabled() );
+
+ MessageUtils.setColorEnabled( false );
+ request = new CliRequest( new String[] { "-Dstyle.color=always" }, null );
+ cli.cli( request );
+ cli.properties( request );
+ cli.logging( request );
+ assertTrue( MessageUtils.isColorEnabled() );
+
+ MessageUtils.setColorEnabled( true );
+ request = new CliRequest( new String[] { "-Dstyle.color=never" }, null );
+ cli.cli( request );
+ cli.properties( request );
+ cli.logging( request );
+ assertFalse( MessageUtils.isColorEnabled() );
+
+ MessageUtils.setColorEnabled( false );
+ request = new CliRequest( new String[] { "-Dstyle.color=always", "-B", "-l", "target/temp/mvn.log" }, null );
+ cli.cli( request );
+ cli.properties( request );
+ cli.logging( request );
+ assertTrue( MessageUtils.isColorEnabled() );
+
+ try
+ {
+ MessageUtils.setColorEnabled( false );
+ request = new CliRequest( new String[] { "-Dstyle.color=maybe", "-B", "-l", "target/temp/mvn.log" }, null );
+ cli.cli( request );
+ cli.properties( request );
+ cli.logging( request );
+ fail( "maybe is not a valid option" );
+ }
+ catch ( IllegalArgumentException e )
+ {
+ // noop
+ }
+ }
}