From d21f7584a2916e3f250684c870e0b654255d71c5 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Tue, 14 May 2024 15:01:47 +0200 Subject: [PATCH] Fix dependency version modifier parsing for pre-releases. Do not consider Final modifier a pre-release. See #77 --- .../release/infra/DependencyCommands.java | 37 ++++++++++++------- .../release/infra/DependencyOperations.java | 2 +- .../data/release/infra/DependencyVersion.java | 15 ++++++++ 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/springframework/data/release/infra/DependencyCommands.java b/src/main/java/org/springframework/data/release/infra/DependencyCommands.java index e22a57a..47b4cbd 100644 --- a/src/main/java/org/springframework/data/release/infra/DependencyCommands.java +++ b/src/main/java/org/springframework/data/release/infra/DependencyCommands.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.TreeMap; +import java.util.function.Predicate; import java.util.stream.Collectors; import org.springframework.data.release.CliComponent; @@ -34,6 +35,7 @@ import org.springframework.data.release.TimedCommand; import org.springframework.data.release.git.GitOperations; import org.springframework.data.release.issues.Tickets; import org.springframework.data.release.model.ModuleIteration; +import org.springframework.data.release.model.Project; import org.springframework.data.release.model.Projects; import org.springframework.data.release.model.SupportedProject; import org.springframework.data.release.model.TrainIteration; @@ -60,12 +62,15 @@ public class DependencyCommands extends TimedCommand { @CliCommand(value = "dependency check") public void check(@CliOption(key = "", mandatory = true) TrainIteration iteration, - @CliOption(key = "all", mandatory = false) Boolean reportAll) throws IOException { + @CliOption(key = "all", mandatory = false) Boolean reportAll, + @CliOption(key = "project", mandatory = false) Project project) throws IOException { git.prepare(iteration); - checkBuildDependencies(iteration, reportAll != null ? reportAll : false); - checkModuleDependencies(iteration, reportAll != null ? reportAll : false); + checkBuildDependencies(iteration, reportAll != null ? reportAll : false, + it -> project == null || it.equals(project)); + checkModuleDependencies(iteration, reportAll != null ? reportAll : false, + it -> project == null || it.equals(project)); } /** @@ -81,8 +86,7 @@ public class DependencyCommands extends TimedCommand { List projects = Projects.all().stream() .filter(it -> it != Projects.BOM && it != Projects.BUILD && it != Projects.COMMONS) - .map(iteration::getSupportedProject) - .collect(Collectors.toList()); + .map(iteration::getSupportedProject).collect(Collectors.toList()); Map dependencies = new TreeMap<>(); @@ -133,8 +137,7 @@ public class DependencyCommands extends TimedCommand { operations.closeUpgradeTickets(module, tickets); } - private DependencyVersions loadDependencyUpgrades(ModuleIteration iteration) - throws IOException { + private DependencyVersions loadDependencyUpgrades(ModuleIteration iteration) throws IOException { if (!Files.exists(Paths.get(BUILD_PROPERTIES))) { logger.log(iteration, "Cannot upgrade dependencies: " + BUILD_PROPERTIES + " does not exist."); @@ -148,13 +151,15 @@ public class DependencyCommands extends TimedCommand { return DependencyUpgradeProposals.fromProperties(iteration.getTrainIteration(), properties); } - private void checkModuleDependencies(TrainIteration iteration, boolean reportAll) throws IOException { + private void checkModuleDependencies(TrainIteration iteration, boolean reportAll, Predicate projectFilter) + throws IOException { String propertiesFile = "dependency-upgrade-modules.properties"; - List projects = Projects.all().stream() - .filter(it -> it != Projects.BOM && it != Projects.BUILD) - .map(iteration::getSupportedProject) + List projects = Projects.all().stream() // + .filter(it -> it != Projects.BOM && it != Projects.BUILD) // + .filter(projectFilter) // + .map(iteration::getSupportedProject) // .collect(Collectors.toList()); DependencyUpgradeProposals proposals = DependencyUpgradeProposals.empty(); @@ -171,13 +176,17 @@ public class DependencyCommands extends TimedCommand { logger.log(iteration, "Upgrade proposals written to " + propertiesFile); } - private void checkBuildDependencies(TrainIteration iteration, boolean reportAll) throws IOException { + private void checkBuildDependencies(TrainIteration iteration, boolean reportAll, Predicate projectFilter) + throws IOException { String propertiesFile = BUILD_PROPERTIES; + if (!projectFilter.test(Projects.BUILD)) { + return; + } + SupportedProject project = iteration.getSupportedProject(Projects.BUILD); - DependencyUpgradeProposals proposals = operations.getDependencyUpgradeProposals(project, - iteration.getIteration()); + DependencyUpgradeProposals proposals = operations.getDependencyUpgradeProposals(project, iteration.getIteration()); Files.write(Paths.get(propertiesFile), proposals.asProperties(iteration).getBytes()); diff --git a/src/main/java/org/springframework/data/release/infra/DependencyOperations.java b/src/main/java/org/springframework/data/release/infra/DependencyOperations.java index 725cb1e..88c5e44 100644 --- a/src/main/java/org/springframework/data/release/infra/DependencyOperations.java +++ b/src/main/java/org/springframework/data/release/infra/DependencyOperations.java @@ -434,7 +434,7 @@ public class DependencyOperations { return availableVersions.stream().filter(it -> { - if (StringUtils.hasText(it.getModifier())) { + if (it.hasPreReleaseModifier()) { return policy.milestoneAllowed(); } diff --git a/src/main/java/org/springframework/data/release/infra/DependencyVersion.java b/src/main/java/org/springframework/data/release/infra/DependencyVersion.java index 84ac760..2cb83ab 100644 --- a/src/main/java/org/springframework/data/release/infra/DependencyVersion.java +++ b/src/main/java/org/springframework/data/release/infra/DependencyVersion.java @@ -25,6 +25,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.springframework.data.release.model.Version; +import org.springframework.util.ObjectUtils; /** * Value object representing a dependency version. The primary identifier is {@link #identifier} that corresponds with @@ -141,4 +142,18 @@ class DependencyVersion implements Comparable { public String toString() { return identifier; } + + public boolean hasPreReleaseModifier() { + + if (ObjectUtils.isEmpty(getModifier())) { + return false; + } + + if (getModifier().equalsIgnoreCase("final")) { + return false; + } + + return true; + + } }