Don't use repo.spring.io in released Homebrew or Scoop recipes

Update our Homebrew and Scoop recipes to use `repo1.maven.org` rather
than `repo.spring.io` for releases.

Fixes gh-33702
This commit is contained in:
Phillip Webb 2023-01-05 13:56:58 -08:00
parent 0d9967c70c
commit 68af379714
4 changed files with 36 additions and 10 deletions

View File

@ -25,6 +25,12 @@ import org.gradle.api.Project;
*/ */
public final class ArtifactoryRepository { public final class ArtifactoryRepository {
private static final String SNAPSHOT = "snapshot";
private static final String MILESTONE = "milestone";
private static final String RELEASE = "release";
private final String name; private final String name;
private ArtifactoryRepository(String name) { private ArtifactoryRepository(String name) {
@ -35,6 +41,10 @@ public final class ArtifactoryRepository {
return this.name; return this.name;
} }
public boolean isRelease() {
return RELEASE.equals(this.name);
}
@Override @Override
public String toString() { public String toString() {
return this.name; return this.name;
@ -48,13 +58,13 @@ public final class ArtifactoryRepository {
String version = project.getVersion().toString(); String version = project.getVersion().toString();
int modifierIndex = version.lastIndexOf('-'); int modifierIndex = version.lastIndexOf('-');
if (modifierIndex == -1) { if (modifierIndex == -1) {
return "release"; return RELEASE;
} }
String type = version.substring(modifierIndex + 1); String type = version.substring(modifierIndex + 1);
if (type.startsWith("M") || type.startsWith("RC")) { if (type.startsWith("M") || type.startsWith("RC")) {
return "milestone"; return MILESTONE;
} }
return "snapshot"; return SNAPSHOT;
} }
} }

View File

@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.Project;
import org.gradle.api.file.RegularFile; import org.gradle.api.file.RegularFile;
import org.gradle.api.provider.Provider; import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.InputFile; import org.gradle.api.tasks.InputFile;
@ -38,9 +39,14 @@ import org.springframework.boot.build.artifactory.ArtifactoryRepository;
* a Homebrew formula. * a Homebrew formula.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Phillip Webb
*/ */
public abstract class AbstractPackageManagerDefinitionTask extends DefaultTask { public abstract class AbstractPackageManagerDefinitionTask extends DefaultTask {
private static final String SPRING_REPO = "https://repo.spring.io/%s";
private static final String MAVEN_REPO = "https://repo1.maven.org/maven2";
private Provider<RegularFile> archive; private Provider<RegularFile> archive;
private File template; private File template;
@ -84,14 +90,19 @@ public abstract class AbstractPackageManagerDefinitionTask extends DefaultTask {
getProject().copy((copy) -> { getProject().copy((copy) -> {
copy.from(this.template); copy.from(this.template);
copy.into(this.outputDir); copy.into(this.outputDir);
Map<String, Object> properties = new HashMap<>(additionalProperties); copy.expand(getProperties(additionalProperties));
properties.put("hash", sha256(this.archive.get().getAsFile()));
properties.put("repo", ArtifactoryRepository.forProject(getProject()));
properties.put("project", getProject());
copy.expand(properties);
}); });
} }
private Map<String, Object> getProperties(Map<String, Object> additionalProperties) {
Map<String, Object> properties = new HashMap<>(additionalProperties);
Project project = getProject();
properties.put("hash", sha256(this.archive.get().getAsFile()));
properties.put("repo", getRepo(project));
properties.put("project", project);
return properties;
}
private String sha256(File file) { private String sha256(File file) {
try { try {
MessageDigest digest = MessageDigest.getInstance("SHA-256"); MessageDigest digest = MessageDigest.getInstance("SHA-256");
@ -102,4 +113,9 @@ public abstract class AbstractPackageManagerDefinitionTask extends DefaultTask {
} }
} }
private String getRepo(Project project) {
ArtifactoryRepository artifactoryRepo = ArtifactoryRepository.forProject(project);
return (!artifactoryRepo.isRelease()) ? String.format(SPRING_REPO, artifactoryRepo.getName()) : MAVEN_REPO;
}
} }

View File

@ -2,7 +2,7 @@ require 'formula'
class SpringBoot < Formula class SpringBoot < Formula
homepage 'https://spring.io/projects/spring-boot' homepage 'https://spring.io/projects/spring-boot'
url 'https://repo.spring.io/${repo}/org/springframework/boot/spring-boot-cli/${project.version}/spring-boot-cli-${project.version}-bin.tar.gz' url '${repo}/org/springframework/boot/spring-boot-cli/${project.version}/spring-boot-cli-${project.version}-bin.tar.gz'
version '${project.version}' version '${project.version}'
sha256 '${hash}' sha256 '${hash}'
head 'https://github.com/spring-projects/spring-boot.git' head 'https://github.com/spring-projects/spring-boot.git'

View File

@ -3,7 +3,7 @@
"version": "${scoopVersion}", "version": "${scoopVersion}",
"license": "Apache 2.0", "license": "Apache 2.0",
"hash": "${hash}", "hash": "${hash}",
"url": "https://repo.spring.io/${repo}/org/springframework/boot/spring-boot-cli/${project.version}/spring-boot-cli-${project.version}-bin.zip", "url": "${repo}/org/springframework/boot/spring-boot-cli/${project.version}/spring-boot-cli-${project.version}-bin.zip",
"extract_dir": "spring-${project.version}", "extract_dir": "spring-${project.version}",
"bin": "bin\\\\spring.bat", "bin": "bin\\\\spring.bat",
"suggest": { "suggest": {