Polishing.

Move code around

See #193
This commit is contained in:
Mark Paluch
2022-02-07 09:54:36 +01:00
parent b52381593f
commit 33f896641b
2 changed files with 58 additions and 52 deletions

View File

@@ -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<Project> 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")

View File

@@ -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<Project> 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);
}
}