void upgradeDependencies()

in buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/UpgradeBom.java [68:109]


	void upgradeDependencies() {
		GitHubRepository repository = createGitHub().getRepository(this.bom.getUpgrade().getGitHub().getOrganization(),
				this.bom.getUpgrade().getGitHub().getRepository());
		List<String> availableLabels = repository.getLabels();
		List<String> issueLabels = this.bom.getUpgrade().getGitHub().getIssueLabels();
		if (!availableLabels.containsAll(issueLabels)) {
			List<String> unknownLabels = new ArrayList<>(issueLabels);
			unknownLabels.removeAll(availableLabels);
			throw new InvalidUserDataException(
					"Unknown label(s): " + StringUtils.collectionToCommaDelimitedString(unknownLabels));
		}
		Milestone milestone = determineMilestone(repository);
		List<Upgrade> upgrades = new InteractiveUpgradeResolver(
				new MavenMetadataVersionResolver(Arrays.asList("https://repo1.maven.org/maven2/")),
				this.bom.getUpgrade().getPolicy(), getServices().get(UserInputHandler.class))
						.resolveUpgrades(this.bom.getLibraries());
		Path buildFile = getProject().getBuildFile().toPath();
		Path gradleProperties = new File(getProject().getRootProject().getProjectDir(), "gradle.properties").toPath();
		UpgradeApplicator upgradeApplicator = new UpgradeApplicator(buildFile, gradleProperties);
		for (Upgrade upgrade : upgrades) {
			String title = "Upgrade to " + upgrade.getLibrary().getName() + " " + upgrade.getVersion();
			System.out.println(title);
			try {
				Path modified = upgradeApplicator.apply(upgrade);
				int issueNumber = repository.openIssue(title, issueLabels, milestone);
				if (new ProcessBuilder().command("git", "add", modified.toFile().getAbsolutePath()).start()
						.waitFor() != 0) {
					throw new IllegalStateException("git add failed");
				}
				if (new ProcessBuilder().command("git", "commit", "-m", title + "\n\nCloses gh-" + issueNumber).start()
						.waitFor() != 0) {
					throw new IllegalStateException("git commit failed");
				}
			}
			catch (IOException ex) {
				throw new TaskExecutionException(this, ex);
			}
			catch (InterruptedException ex) {
				Thread.currentThread().interrupt();
			}
		}
	}