From 33f896641b17909e7ca20ed846246c900bc61a93 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 7 Feb 2022 09:54:36 +0100 Subject: [PATCH] Polishing. Move code around See #193 --- .../dependency/InfrastructureCommands.java | 56 ++----------------- .../dependency/InfrastructureOperations.java | 54 ++++++++++++++++++ 2 files changed, 58 insertions(+), 52 deletions(-) diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureCommands.java b/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureCommands.java index ac9e371..e989383 100644 --- a/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureCommands.java +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureCommands.java @@ -19,25 +19,16 @@ import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.experimental.FieldDefaults; -import java.io.FileInputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.List; -import java.util.Properties; -import java.util.concurrent.ExecutorService; import org.springframework.data.release.CliComponent; 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.TrainIteration; -import org.springframework.data.release.utils.ExecutionUtils; import org.springframework.data.release.utils.Logger; -import org.springframework.data.util.Streamable; import org.springframework.shell.core.annotation.CliCommand; import org.springframework.shell.core.annotation.CliOption; import org.springframework.shell.support.table.Table; @@ -52,10 +43,7 @@ import org.springframework.shell.support.table.Table; @FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true) public class InfrastructureCommands extends TimedCommand { - public static final String MAVEN_PROPERTIES = "dependency-upgrade-maven.properties"; - DependencyOperations operations; - ExecutorService executor; GitOperations git; InfrastructureOperations infra; Logger logger; @@ -68,57 +56,21 @@ public class InfrastructureCommands extends TimedCommand { DependencyUpgradeProposals proposals = operations.getMavenWrapperDependencyUpgradeProposals(iteration); - Files.write(Paths.get(MAVEN_PROPERTIES), proposals.asProperties(iteration).getBytes()); + Files.write(Paths.get(InfrastructureOperations.MAVEN_PROPERTIES), proposals.asProperties(iteration).getBytes()); Table summary = proposals.toTable(reportAll == null ? false : reportAll); logger.log(Projects.BUILD, "Upgrade summary:" + System.lineSeparator() + System.lineSeparator() + summary); - logger.log(iteration, "Upgrade proposals written to " + MAVEN_PROPERTIES); + logger.log(iteration, "Upgrade proposals written to " + InfrastructureOperations.MAVEN_PROPERTIES); } @CliCommand(value = "infra maven upgrade") - public void upgrade(@CliOption(key = "", mandatory = true) TrainIteration iteration) + public void upgradeMavenVersion(@CliOption(key = "", mandatory = true) TrainIteration iteration) throws IOException, InterruptedException { logger.log(iteration, "Applying Maven wrapper upgrades to Spring Data…"); - DependencyVersions dependencyVersions = loadDependencyUpgrades(iteration); - - if (dependencyVersions.isEmpty()) { - throw new IllegalStateException("No version to upgrade found!"); - } - - git.checkout(iteration.getTrain(), false); - - List projectsToUpgrade = operations - .getProjectsToUpgradeMavenWrapper(dependencyVersions.get(Dependencies.MAVEN), iteration); - - ExecutionUtils.run(executor, Streamable.of(projectsToUpgrade), project -> { - - ModuleIteration module = iteration.getModule(project); - Tickets tickets = operations.getOrCreateUpgradeTickets(module, dependencyVersions); - operations.upgradeMavenWrapperVersion(tickets, module, dependencyVersions); - git.push(module); - - // Allow GitHub to catch up with ticket notifications. - Thread.sleep(1500); - - operations.closeUpgradeTickets(module, tickets); - }); - } - - private DependencyVersions loadDependencyUpgrades(TrainIteration iteration) throws IOException { - - if (!Files.exists(Paths.get(MAVEN_PROPERTIES))) { - logger.log(iteration, "Cannot upgrade dependencies: " + MAVEN_PROPERTIES + " does not exist."); - } - - Properties properties = new Properties(); - try (FileInputStream fis = new FileInputStream(MAVEN_PROPERTIES)) { - properties.load(fis); - } - - return DependencyUpgradeProposals.fromProperties(iteration, properties); + infra.upgradeMavenVersion(iteration); } @CliCommand(value = "infra distribute ci-properties") diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureOperations.java b/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureOperations.java index efdaad1..b766a17 100644 --- a/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureOperations.java +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/InfrastructureOperations.java @@ -17,10 +17,16 @@ package org.springframework.data.release.dependency; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.experimental.FieldDefaults; import java.io.File; +import java.io.FileInputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; import java.util.Optional; +import java.util.Properties; import java.util.concurrent.ExecutorService; import org.apache.commons.io.FileUtils; @@ -28,12 +34,15 @@ import org.apache.commons.io.FileUtils; import org.springframework.data.release.git.Branch; import org.springframework.data.release.git.GitOperations; import org.springframework.data.release.io.Workspace; +import org.springframework.data.release.issues.Tickets; import org.springframework.data.release.model.Module; +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.Train; import org.springframework.data.release.model.TrainIteration; import org.springframework.data.release.utils.ExecutionUtils; +import org.springframework.data.release.utils.Logger; import org.springframework.data.util.Streamable; import org.springframework.stereotype.Component; @@ -47,9 +56,13 @@ public class InfrastructureOperations { public static final String CI_PROPERTIES = "ci/pipeline.properties"; + public static final String MAVEN_PROPERTIES = "dependency-upgrade-maven.properties"; + + DependencyOperations dependencies; Workspace workspace; GitOperations git; ExecutorService executor; + Logger logger; /** * Distribute {@link #CI_PROPERTIES} from {@link Projects#BUILD} to all modules within {@link TrainIteration}. @@ -99,4 +112,45 @@ public class InfrastructureOperations { } } + public void upgradeMavenVersion(TrainIteration iteration) { + + DependencyVersions dependencyVersions = loadDependencyUpgrades(iteration); + + if (dependencyVersions.isEmpty()) { + throw new IllegalStateException("No version to upgrade found!"); + } + + git.checkout(iteration.getTrain(), false); + + List projectsToUpgrade = dependencies + .getProjectsToUpgradeMavenWrapper(dependencyVersions.get(Dependencies.MAVEN), iteration); + + ExecutionUtils.run(executor, Streamable.of(projectsToUpgrade), project -> { + + ModuleIteration module = iteration.getModule(project); + Tickets tickets = dependencies.getOrCreateUpgradeTickets(module, dependencyVersions); + dependencies.upgradeMavenWrapperVersion(tickets, module, dependencyVersions); + git.push(module); + + // Allow GitHub to catch up with ticket notifications. + Thread.sleep(1500); + + dependencies.closeUpgradeTickets(module, tickets); + }); + } + + @SneakyThrows + private DependencyVersions loadDependencyUpgrades(TrainIteration iteration) { + + if (!Files.exists(Paths.get(MAVEN_PROPERTIES))) { + logger.log(iteration, "Cannot upgrade dependencies: " + MAVEN_PROPERTIES + " does not exist."); + } + + Properties properties = new Properties(); + try (FileInputStream fis = new FileInputStream(MAVEN_PROPERTIES)) { + properties.load(fis); + } + + return DependencyUpgradeProposals.fromProperties(iteration, properties); + } }