From bd9cd808f8d5c3583fed145d568b78762ac3aaf5 Mon Sep 17 00:00:00 2001 From: Andres Almiray Date: Mon, 2 Aug 2021 23:24:00 +0200 Subject: [PATCH] [maven] add colored output when executing config goal. Resolves #327 --- gradle.properties | 1 + .../jreleaser-maven-plugin.gradle | 1 + .../maven/plugin/JReleaserConfigMojo.java | 2 + .../internal/JReleaserModelPrinter.java | 61 ++++++++++++++++++- settings.gradle | 1 + 5 files changed, 64 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 18139ade..d37ecd8b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -45,6 +45,7 @@ junitVersion = 5.7.2 hamcrestVersion = 2.2 mailApiVersion = 1.6.7 mavenVersion = 3.6.0 +mavenSharedVersion = 3.3.4 mustacheVersion = 0.9.10 picocliVersion = 4.6.1 plexusVersion = 3.1.0 diff --git a/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle b/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle index abe9b969..96ced83b 100644 --- a/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle +++ b/plugins/jreleaser-maven-plugin/jreleaser-maven-plugin.gradle @@ -39,6 +39,7 @@ dependencies { api project(':jreleaser-config-json') implementation "org.apache.maven:maven-plugin-api:$mavenVersion" + implementation "org.apache.maven.shared:maven-shared-utils:$mavenSharedVersion" compileOnly "org.apache.maven:maven-core:$mavenVersion" compileOnly "org.apache.maven.plugin-tools:maven-plugin-annotations:$mavenVersion" diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java index 9c9592f1..bda45a8c 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/JReleaserConfigMojo.java @@ -21,10 +21,12 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.shared.utils.logging.MessageUtils; import org.jreleaser.maven.plugin.internal.JReleaserModelPrinter; import org.jreleaser.model.JReleaserContext; import java.io.PrintWriter; +import java.io.StringWriter; /** * Display current configuration. diff --git a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java index 12b94be2..7c4506b7 100644 --- a/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java +++ b/plugins/jreleaser-maven-plugin/src/main/java/org/jreleaser/maven/plugin/internal/JReleaserModelPrinter.java @@ -17,9 +17,11 @@ */ package org.jreleaser.maven.plugin.internal; - import java.io.PrintWriter; +import static org.apache.maven.shared.utils.logging.MessageUtils.buffer; +import static org.apache.maven.shared.utils.logging.MessageUtils.isColorEnabled; + /** * @author Andres Almiray * @since 0.1.0 @@ -31,6 +33,61 @@ public class JReleaserModelPrinter extends org.jreleaser.model.JReleaserModelPri @Override protected String color(String color, String input) { - return input; + switch (color) { + case "cyan": + return cyan(input); + case "blue": + return blue(input); + case "yellow": + return yellow(input); + case "red": + return red(input); + case "green": + return green(input); + case "magenta": + return magenta(input); + case "black": + return black(input); + case "white": + return white(input); + default: + return input; + } + } + + private String black(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[30m" + s + "\u001b[0m").toString(); + } + + private String red(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[31m" + s + "\u001b[0m").toString(); + } + + private String green(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[32m" + s + "\u001b[0m").toString(); + } + + private String yellow(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[33m" + s + "\u001b[0m").toString(); + } + + private String blue(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[34m" + s + "\u001b[0m").toString(); + } + + private String magenta(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[35m" + s + "\u001b[0m").toString(); + } + + private String cyan(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[36m" + s + "\u001b[0m").toString(); + } + + private String white(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001B[37m" + s + "\u001b[0m").toString(); + } + + private String erase(CharSequence s) { + return buffer().a(!isColorEnabled() ? s : "\u001b[2K" + s).toString(); } } diff --git a/settings.gradle b/settings.gradle index 60c1d077..9464440e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -60,6 +60,7 @@ enforce { rule(enforcer.rules.ForceDependencies) { r -> r.dependencies.addAll "org.apache.maven:maven-artifact:$mavenVersion", + "org.apache.maven.shared:maven-shared-utils:$mavenSharedVersion", "org.codehaus.plexus:plexus-utils:$plexusVersion", "org.codehaus.plexus:plexus-component-annotations:1.7.1", "com.fasterxml.jackson.core:jackson-core:$jacksonVersion",