here is my idea on the way to manage consistent and configurable colors across Maven core and plugins
to use it: - use AnsiUtils instead of Ansi class - same a() methods - but for colors selections, there are methods defining use cases Configuration is not yet implemented: need to find a good way to inject info: but at least, using this API instead of direct JAnsi's Ansi will ease change and consistency WDYT? Regards, Hervé Le jeudi 16 juin 2016 17:55:00 hbout...@apache.org a écrit : > Author: hboutemy > Date: Thu Jun 16 17:55:00 2016 > New Revision: 1748766 > > URL: http://svn.apache.org/viewvc?rev=1748766&view=rev > Log: > add methods to manage colors consistently across plugins > > Modified: > > maven/shared/trunk/maven-project-utils/src/main/java/org/apache/maven/share > d/project/utils/AnsiUtils.java > > Modified: > maven/shared/trunk/maven-project-utils/src/main/java/org/apache/maven/share > d/project/utils/AnsiUtils.java URL: > http://svn.apache.org/viewvc/maven/shared/trunk/maven-project-utils/src/mai > n/java/org/apache/maven/shared/project/utils/AnsiUtils.java?rev=1748766&r1=1 > 748765&r2=1748766&view=diff > =========================================================================== > === --- > maven/shared/trunk/maven-project-utils/src/main/java/org/apache/maven/share > d/project/utils/AnsiUtils.java (original) +++ > maven/shared/trunk/maven-project-utils/src/main/java/org/apache/maven/share > d/project/utils/AnsiUtils.java Thu Jun 16 17:55:00 2016 @@ -24,14 +24,27 @@ > import org.fusesource.jansi.Ansi; > import org.fusesource.jansi.AnsiConsole; > > /** > - * Ansi color utils, to enable colors only if Maven version is at least > 3.4. + * Ansi color utils, to manage colors colors consistently across > plugins (only if Maven version is at least 3.4). */ > public class AnsiUtils > { > private static final String MINIMUM_MAVEN_VERSION = "3.4.0"; // color > added in Maven 3.4.0: see MNG-3507 > > + private Ansi ansi; > + > private AnsiUtils() > { > + ansi = new Ansi(); > + } > + > + private AnsiUtils( StringBuilder builder ) > + { > + ansi = new Ansi( builder ); > + } > + > + private AnsiUtils( int size ) > + { > + ansi = new Ansi( size ); > } > > public static void systemInstall() > @@ -48,4 +61,202 @@ public class AnsiUtils > { > AnsiConsole.systemUninstall(); > } > + > + public static AnsiUtils ansi() > + { > + return new AnsiUtils(); > + } > + > + public static AnsiUtils ansi( StringBuilder builder ) > + { > + return new AnsiUtils( builder ); > + } > + > + public static AnsiUtils ansi( int size ) > + { > + return new AnsiUtils( size ); > + } > + > + // > + // consistent color management > + // TODO make configurable > + // settings.xml? during systemInstall(Settings)? > + // or project properties (that can be injected by settings)? > + // > + /** > + * Insert color for DEBUG level display. > + * @return by default, bold cyan > + */ > + public AnsiUtils debug() > + { > + ansi.bold().fgCyan(); > + return this; > + } > + > + /** > + * Insert color for INFO level display. > + * @return by default, bold blue > + */ > + public AnsiUtils info() > + { > + ansi.bold().fgBlue(); > + return this; > + } > + > + /** > + * Insert color for WARNING level or warning message display. > + * @return by default, bold yellow > + */ > + public AnsiUtils warning() > + { > + ansi.bold().fgYellow(); > + return this; > + } > + > + /** > + * Insert color for ERROR level display. > + * @return by default, bold red > + */ > + public AnsiUtils error() > + { > + ansi.bold().fgRed(); > + return this; > + } > + > + /** > + * Insert color for success message display. > + * @return by default, bold green > + */ > + public AnsiUtils success() > + { > + ansi.bold().fgGreen(); > + return this; > + } > + > + /** > + * Insert color for failure message display. > + * @return by default, bold red > + */ > + public AnsiUtils failure() > + { > + ansi.bold().fgRed(); > + return this; > + } > + > + /** > + * Insert color for highlighted message display. > + * @return by default, bold > + */ > + public AnsiUtils highlight() > + { > + ansi.bold(); > + return this; > + } > + > + /** > + * Insert color for mojo message display. > + * @return by default, green > + */ > + public AnsiUtils mojo() > + { > + ansi.fgGreen(); > + return this; > + } > + > + /** > + * Insert color for project message display. > + * @return by default, cyan > + */ > + public AnsiUtils project() > + { > + ansi.fgCyan(); > + return this; > + } > + > + // > + // message building methods (modelled after Ansi methods) > + // > + public AnsiUtils reset() > + { > + ansi.reset(); > + return this; > + } > + > + public AnsiUtils a( boolean value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( char value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( char[] value, int offset, int len ) > + { > + ansi.a( value, offset, len ); > + return this; > + } > + > + public AnsiUtils a( char[] value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( CharSequence value, int start, int end ) > + { > + ansi.a( value, start, end ); > + return this; > + } > + > + public AnsiUtils a( CharSequence value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( double value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( float value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( int value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( long value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils a( Object value ) > + { > + ansi.a( value ); > + return this; > + } > + > + public AnsiUtils newline() > + { > + ansi.newline(); > + return this; > + } > + > + public AnsiUtils format( String pattern, Object... args ) > + { > + ansi.format( pattern, args ); > + return this; > + } > } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org