From 24582c997a7b675d5e7cc08a3a751bb21505f378 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Thu, 17 Feb 2022 17:06:39 +0100 Subject: [PATCH 1/2] #563 introduce property "versions.displayTerminalWidth" --- .../versions/AbstractVersionsDisplayMojo.java | 18 ++++++++++++++++++ .../versions/DisplayDependencyUpdatesMojo.java | 6 +++--- .../versions/DisplayPluginUpdatesMojo.java | 8 ++++---- .../versions/DisplayPropertyUpdatesMojo.java | 4 ++-- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDisplayMojo.java b/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDisplayMojo.java index 1b74352b2..b300c5cb6 100644 --- a/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDisplayMojo.java +++ b/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDisplayMojo.java @@ -36,6 +36,9 @@ public abstract class AbstractVersionsDisplayMojo extends AbstractVersionsUpdaterMojo { + + private static final int DEFAULT_DISPLAY_TERMINAL_WIDTH = 80; + /** * If specified then the display output will be sent to the specified file. * @@ -60,6 +63,14 @@ public abstract class AbstractVersionsDisplayMojo @Parameter( property = "outputEncoding", defaultValue = "${project.reporting.outputEncoding}" ) private String outputEncoding; + /** + * Terminal width which should be used to format the padding of the version info list output. + * + * @since 2.10.0 + */ + @Parameter( property = "versions.displayTerminalWidth", defaultValue = AbstractVersionsDisplayMojo.DEFAULT_DISPLAY_TERMINAL_WIDTH + "" ) + private int displayTerminalWidth; + private boolean outputFileError = false; protected void logInit() @@ -150,4 +161,11 @@ protected void logLine( boolean error, String line ) } } + /** + * @return Offset of the configured display terminal width compared to the default with of 80. + */ + protected int getDisplayTerminalWidthOffset() { + return this.displayTerminalWidth - DEFAULT_DISPLAY_TERMINAL_WIDTH; + } + } diff --git a/src/main/java/org/codehaus/mojo/versions/DisplayDependencyUpdatesMojo.java b/src/main/java/org/codehaus/mojo/versions/DisplayDependencyUpdatesMojo.java index aa0fe87e9..a2c7439d8 100644 --- a/src/main/java/org/codehaus/mojo/versions/DisplayDependencyUpdatesMojo.java +++ b/src/main/java/org/codehaus/mojo/versions/DisplayDependencyUpdatesMojo.java @@ -436,15 +436,15 @@ private void logUpdates( Map updates, String secti } String right = " " + ( latest == null ? current : current + " -> " + latest ); List t = latest == null ? usingCurrent : withUpdates; - if ( right.length() + left.length() + 3 > INFO_PAD_SIZE ) + if ( right.length() + left.length() + 3 > INFO_PAD_SIZE + getDisplayTerminalWidthOffset() ) { t.add( left + "..." ); - t.add( StringUtils.leftPad( right, INFO_PAD_SIZE ) ); + t.add( StringUtils.leftPad( right, INFO_PAD_SIZE + getDisplayTerminalWidthOffset() ) ); } else { - t.add( StringUtils.rightPad( left, INFO_PAD_SIZE - right.length(), "." ) + right ); + t.add( StringUtils.rightPad( left, INFO_PAD_SIZE + getDisplayTerminalWidthOffset() - right.length(), "." ) + right ); } } diff --git a/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java b/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java index 9e6f64f37..8dfa4eebe 100644 --- a/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java +++ b/src/main/java/org/codehaus/mojo/versions/DisplayPluginUpdatesMojo.java @@ -469,12 +469,12 @@ public void execute() { // plugin version configured that require a Maven version higher than spec upgradePlugins.put( upgradePluginKey, - pad( upgradePluginKey, INFO_PAD_SIZE, newer ) ); + pad( upgradePluginKey, INFO_PAD_SIZE + getDisplayTerminalWidthOffset(), newer ) ); } else { // plugin that can be upgraded - upgradePlugins.put( upgradePluginKey, pad( upgradePluginKey, INFO_PAD_SIZE, + upgradePlugins.put( upgradePluginKey, pad( upgradePluginKey, INFO_PAD_SIZE + getDisplayTerminalWidthOffset(), effectiveVersion, " -> ", newer ) ); } } @@ -544,7 +544,7 @@ public void execute() superPomDrivingMinVersion = true; } - pluginLockdowns.add( pad( compactKey( groupId, artifactId ), WARN_PAD_SIZE, + pluginLockdowns.add( pad( compactKey( groupId, artifactId ), WARN_PAD_SIZE + getDisplayTerminalWidthOffset(), superPomDrivingMinVersion ? FROM_SUPER_POM : "", newVersion ) ); } else if ( artifactVersion != null ) @@ -558,7 +558,7 @@ else if ( artifactVersion != null ) if ( version != null && artifactVersion != null && newVersion != null && effectiveVersion != null && new DefaultArtifactVersion( effectiveVersion ).compareTo( new DefaultArtifactVersion( newVersion ) ) < 0 ) { - pluginUpdates.add( pad( compactKey( groupId, artifactId ), INFO_PAD_SIZE, + pluginUpdates.add( pad( compactKey( groupId, artifactId ), INFO_PAD_SIZE + getDisplayTerminalWidthOffset(), effectiveVersion, " -> ", newVersion ) ); } } diff --git a/src/main/java/org/codehaus/mojo/versions/DisplayPropertyUpdatesMojo.java b/src/main/java/org/codehaus/mojo/versions/DisplayPropertyUpdatesMojo.java index 2924a881d..bb21169a2 100644 --- a/src/main/java/org/codehaus/mojo/versions/DisplayPropertyUpdatesMojo.java +++ b/src/main/java/org/codehaus/mojo/versions/DisplayPropertyUpdatesMojo.java @@ -148,7 +148,7 @@ public void execute() buf.append( property.getName() ); buf.append( "} " ); final String newVersion = winner.toString(); - int padding = INFO_PAD_SIZE - currentVersion.length() - newVersion.length() - 4; + int padding = INFO_PAD_SIZE - currentVersion.length() - newVersion.length() - 4 + getDisplayTerminalWidthOffset(); while ( buf.length() < padding ) { buf.append( '.' ); @@ -165,7 +165,7 @@ public void execute() buf.append( "${" ); buf.append( property.getName() ); buf.append( "} " ); - int padding = INFO_PAD_SIZE - currentVersion.length(); + int padding = INFO_PAD_SIZE - currentVersion.length() + getDisplayTerminalWidthOffset(); while ( buf.length() < padding ) { buf.append( '.' ); From 2d7497204dabcc59a344d03793dbbecc50b28334 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Wed, 9 Mar 2022 15:24:07 +0100 Subject: [PATCH 2/2] add integration tests --- .../invoker.properties | 2 + .../pom.xml | 50 +++++++++++++++++++ .../verify.bsh | 27 ++++++++++ .../invoker.properties | 1 + .../pom.xml | 33 ++++++++++++ .../verify.bsh | 27 ++++++++++ .../invoker.properties | 1 + .../pom.xml | 48 ++++++++++++++++++ .../verify.bsh | 27 ++++++++++ 9 files changed, 216 insertions(+) create mode 100644 src/it/it-display-dependency-updates-008-displayTerminalWidth/invoker.properties create mode 100644 src/it/it-display-dependency-updates-008-displayTerminalWidth/pom.xml create mode 100644 src/it/it-display-dependency-updates-008-displayTerminalWidth/verify.bsh create mode 100644 src/it/it-display-plugin-updates-012-displayTerminalWidth/invoker.properties create mode 100644 src/it/it-display-plugin-updates-012-displayTerminalWidth/pom.xml create mode 100644 src/it/it-display-plugin-updates-012-displayTerminalWidth/verify.bsh create mode 100644 src/it/it-display-property-updates-002-displayTerminalWidth/invoker.properties create mode 100644 src/it/it-display-property-updates-002-displayTerminalWidth/pom.xml create mode 100644 src/it/it-display-property-updates-002-displayTerminalWidth/verify.bsh diff --git a/src/it/it-display-dependency-updates-008-displayTerminalWidth/invoker.properties b/src/it/it-display-dependency-updates-008-displayTerminalWidth/invoker.properties new file mode 100644 index 000000000..a1534ca8b --- /dev/null +++ b/src/it/it-display-dependency-updates-008-displayTerminalWidth/invoker.properties @@ -0,0 +1,2 @@ +invoker.goals=${project.groupId}:${project.artifactId}:${project.version}:display-dependency-updates +invoker.mavenOpts=-Dverbose=true -Dversions.outputFile=./dependencyUpdate.txt -DoutputEncoding=UTF-8 -Dversions.displayTerminalWidth=120 \ No newline at end of file diff --git a/src/it/it-display-dependency-updates-008-displayTerminalWidth/pom.xml b/src/it/it-display-dependency-updates-008-displayTerminalWidth/pom.xml new file mode 100644 index 000000000..9955ecbc5 --- /dev/null +++ b/src/it/it-display-dependency-updates-008-displayTerminalWidth/pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + localhost + it-display-dependency-updates-008-displayTerminalWidth + 1.0 + pom + display-dependency-updates + Validate usage of displayTerminalWidth parameter + http://localhost/ + + + localhost + dummy-api + 1.1 + + + + + + + localhost + dummy-maven-plugin + 1.0 + + + maven-clean-plugin + 2.2 + + + maven-deploy-plugin + 2.3 + + + maven-install-plugin + 2.2 + + + maven-site-plugin + 2.0 + + + maven-project-info-reports-plugin + 2.1 + + + + + diff --git a/src/it/it-display-dependency-updates-008-displayTerminalWidth/verify.bsh b/src/it/it-display-dependency-updates-008-displayTerminalWidth/verify.bsh new file mode 100644 index 000000000..956ef51df --- /dev/null +++ b/src/it/it-display-dependency-updates-008-displayTerminalWidth/verify.bsh @@ -0,0 +1,27 @@ +import java.io.*; +import org.codehaus.plexus.util.FileUtils; + +try +{ + + // validate outputFile + File outputFile = new File( basedir, "dependencyUpdate.txt" ); + if (!outputFile.exists()) { + System.out.println( "outputFile not found: " + outputFile.getPath() ); + return false; + } + buf = FileUtils.fileRead( outputFile ); + if ( !buf.contains("localhost:dummy-api ............................................................................... 1.1 ->") ) + { + System.out.println( "displayTerminalWidth parameter not respected" ); + return false; + } + +} +catch( Throwable t ) +{ + t.printStackTrace(); + return false; +} + +return true; diff --git a/src/it/it-display-plugin-updates-012-displayTerminalWidth/invoker.properties b/src/it/it-display-plugin-updates-012-displayTerminalWidth/invoker.properties new file mode 100644 index 000000000..a2c0507fe --- /dev/null +++ b/src/it/it-display-plugin-updates-012-displayTerminalWidth/invoker.properties @@ -0,0 +1 @@ +invoker.goals=${project.groupId}:${project.artifactId}:${project.version}:display-plugin-updates -Dversions.outputFile=./dependencyUpdate.txt -Dversions.displayTerminalWidth=120 diff --git a/src/it/it-display-plugin-updates-012-displayTerminalWidth/pom.xml b/src/it/it-display-plugin-updates-012-displayTerminalWidth/pom.xml new file mode 100644 index 000000000..2bb5335ad --- /dev/null +++ b/src/it/it-display-plugin-updates-012-displayTerminalWidth/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + localhost + it-display-plugin-updates-012-displayTerminalWidth + 1.0 + pom + display-plugin-updates + + Validate usage of displayTerminalWidth parameter + + + + + + localhost + dummy-maven-plugin + + + maven-clean-plugin + 2.2 + + + maven-deploy-plugin + 2.3 + + + + + + diff --git a/src/it/it-display-plugin-updates-012-displayTerminalWidth/verify.bsh b/src/it/it-display-plugin-updates-012-displayTerminalWidth/verify.bsh new file mode 100644 index 000000000..17f842afa --- /dev/null +++ b/src/it/it-display-plugin-updates-012-displayTerminalWidth/verify.bsh @@ -0,0 +1,27 @@ +import java.io.*; +import org.codehaus.plexus.util.FileUtils; + +try +{ + + // validate outputFile + File outputFile = new File( basedir, "dependencyUpdate.txt" ); + if (!outputFile.exists()) { + System.out.println( "outputFile not found: " + outputFile.getPath() ); + return false; + } + buf = FileUtils.fileRead( outputFile ); + if ( !buf.contains("maven-deploy-plugin ............................................................................ 2.3 ->") ) + { + System.out.println( "displayTerminalWidth parameter not respected" ); + return false; + } + +} +catch( Throwable t ) +{ + t.printStackTrace(); + return false; +} + +return true; diff --git a/src/it/it-display-property-updates-002-displayTerminalWidth/invoker.properties b/src/it/it-display-property-updates-002-displayTerminalWidth/invoker.properties new file mode 100644 index 000000000..21a664fe8 --- /dev/null +++ b/src/it/it-display-property-updates-002-displayTerminalWidth/invoker.properties @@ -0,0 +1 @@ +invoker.goals=-DautoLinkItems=true ${project.groupId}:${project.artifactId}:${project.version}:display-property-updates -Dversions.outputFile=./dependencyUpdate.txt -Dversions.displayTerminalWidth=120 diff --git a/src/it/it-display-property-updates-002-displayTerminalWidth/pom.xml b/src/it/it-display-property-updates-002-displayTerminalWidth/pom.xml new file mode 100644 index 000000000..fffa2f43e --- /dev/null +++ b/src/it/it-display-property-updates-002-displayTerminalWidth/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + localhost + it-display-property-updates-002-displayTerminalWidth + 1.0 + pom + display-property-updates + + Validate usage of displayTerminalWidth parameter + + + 1.0 + + + + + + + maven-clean-plugin + 2.2 + + + localhost + dummy-api + [${api},2.1-!) + + + + + maven-deploy-plugin + 2.3 + + + maven-install-plugin + 2.2 + + + maven-site-plugin + 2.0 + + + + + + diff --git a/src/it/it-display-property-updates-002-displayTerminalWidth/verify.bsh b/src/it/it-display-property-updates-002-displayTerminalWidth/verify.bsh new file mode 100644 index 000000000..e42f0cb50 --- /dev/null +++ b/src/it/it-display-property-updates-002-displayTerminalWidth/verify.bsh @@ -0,0 +1,27 @@ +import java.io.*; +import org.codehaus.plexus.util.FileUtils; + +try +{ + + // validate outputFile + File outputFile = new File( basedir, "dependencyUpdate.txt" ); + if (!outputFile.exists()) { + System.out.println( "outputFile not found: " + outputFile.getPath() ); + return false; + } + buf = FileUtils.fileRead( outputFile ); + if ( !buf.contains("${api} ........................................................................................... 1.0 ->") ) + { + System.out.println( "displayTerminalWidth parameter not respected" ); + return false; + } + +} +catch( Throwable t ) +{ + t.printStackTrace(); + return false; +} + +return true;