use of org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL in project jreleaser by jreleaser.
the class BrewPackagerProcessor method fillPackagerProperties.
@Override
protected void fillPackagerProperties(Map<String, Object> props, Distribution distribution) throws PackagerProcessingException {
GitService gitService = context.getModel().getRelease().getGitService();
props.put(KEY_BREW_FORMULA_NAME, packager.getResolvedFormulaName(props));
props.put(KEY_HOMEBREW_TAP_REPO_URL, gitService.getResolvedRepoUrl(context.getModel(), packager.getTap().getOwner(), packager.getTap().getResolvedName()));
props.put(KEY_HOMEBREW_TAP_REPO_CLONE_URL, gitService.getResolvedRepoCloneUrl(context.getModel(), packager.getTap().getOwner(), packager.getTap().getResolvedName()));
props.put(KEY_BREW_HAS_LIVECHECK, packager.hasLivecheck());
if (packager.hasLivecheck()) {
props.put(KEY_BREW_LIVECHECK, packager.getLivecheck().stream().map(line -> resolveTemplate(line, props)).map(MustacheUtils::passThrough).collect(Collectors.toList()));
}
Brew.Cask cask = packager.getCask();
if (cask.isEnabled()) {
boolean hasPkg = isNotBlank(cask.getPkgName());
boolean hasApp = isNotBlank(cask.getAppName());
props.put(KEY_BREW_CASK_NAME, cask.getResolvedCaskName(props));
props.put(KEY_BREW_CASK_DISPLAY_NAME, cask.getResolvedDisplayName(props));
props.put(KEY_BREW_CASK_HAS_UNINSTALL, !cask.getUninstallItems().isEmpty());
props.put(KEY_BREW_CASK_HAS_PKG, hasPkg);
if (hasPkg) {
props.put(KEY_BREW_CASK_PKG, cask.getResolvedPkgName(props));
}
props.put(KEY_BREW_CASK_HAS_APP, hasApp);
if (hasApp) {
props.put(KEY_BREW_CASK_APP, cask.getResolvedAppName(props));
}
props.put(KEY_BREW_CASK_UNINSTALL, cask.getUninstallItems());
props.put(KEY_BREW_CASK_HAS_ZAP, !cask.getZapItems().isEmpty());
props.put(KEY_BREW_CASK_ZAP, cask.getZapItems());
String appcast = cask.getResolvedAppcast(props);
props.put(KEY_BREW_CASK_HAS_APPCAST, isNotBlank(appcast));
props.put(KEY_BREW_CASK_APPCAST, appcast);
if (!hasApp && !hasPkg) {
for (Artifact artifact : collectArtifacts(distribution)) {
if (artifact.getPath().endsWith(ZIP.extension())) {
props.put(KEY_DISTRIBUTION_URL, resolveArtifactUrl(props, distribution, artifact));
props.put(KEY_BREW_CASK_HAS_BINARY, true);
break;
}
}
}
} else if (packager.isMultiPlatform()) {
List<String> multiPlatforms = new ArrayList<>();
for (Artifact artifact : collectArtifacts(distribution)) {
if (!artifact.getPath().endsWith(ZIP.extension()) || isBlank(artifact.getPlatform()))
continue;
String template = null;
String artifactUrl = resolveArtifactUrl(props, distribution, artifact);
if (PlatformUtils.isMac(artifact.getPlatform())) {
if (PlatformUtils.isArm(artifact.getPlatform())) {
template = TPL_MAC_ARM;
} else {
template = TPL_MAC_INTEL;
}
} else if (PlatformUtils.isLinux(artifact.getPlatform())) {
if (PlatformUtils.isArm(artifact.getPlatform())) {
template = TPL_LINUX_ARM;
} else {
template = TPL_LINUX_INTEL;
}
}
if (isNotBlank(template)) {
Map<String, Object> newProps = new LinkedHashMap<>(props);
newProps.put(KEY_DISTRIBUTION_URL, artifactUrl);
newProps.put(KEY_DISTRIBUTION_CHECKSUM_SHA_256, artifact.getHash(Algorithm.SHA_256));
multiPlatforms.add(resolveTemplate(template, newProps));
}
}
if (multiPlatforms.isEmpty()) {
throw new PackagerProcessingException(org.jreleaser.bundle.RB.$("ERROR_brew_multiplatform_artifacts"));
}
props.put(KEY_BREW_MULTIPLATFORM, passThrough(String.join(System.lineSeparator() + " ", multiPlatforms)));
} else if ((distribution.getType() == Distribution.DistributionType.JAVA_BINARY || distribution.getType() == Distribution.DistributionType.SINGLE_JAR) && !isTrue(packager.getExtraProperties().get(SKIP_JAVA))) {
packager.addDependency("openjdk@" + props.get(KEY_DISTRIBUTION_JAVA_VERSION));
}
props.put(KEY_BREW_DEPENDENCIES, packager.getDependenciesAsList().stream().map(dependency -> passThrough(dependency.toString())).collect(Collectors.toList()));
}
use of org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL in project jreleaser by jreleaser.
the class AbstractPackagerProcessor method verifyAndAddArtifacts.
protected boolean verifyAndAddArtifacts(Map<String, Object> props, Distribution distribution, List<Artifact> artifacts) throws PackagerProcessingException {
List<Artifact> activeArtifacts = artifacts.stream().filter(Artifact::isActive).collect(Collectors.toList());
if (activeArtifacts.size() == 0) {
// we can't proceed
context.getLogger().warn(RB.$("packager.no.matching.artifacts"), distribution.getName(), capitalize(packager.getType()));
return false;
}
int count = 0;
for (Artifact artifact : activeArtifacts) {
String artifactUrl = Artifacts.resolveDownloadUrl(context, packager.getType(), distribution, artifact);
if (isBlank(artifactUrl))
continue;
count++;
String platform = artifact.getPlatform();
String artifactPlatform = isNotBlank(platform) ? capitalize(platform) : "";
String platformReplaced = distribution.getPlatform().applyReplacements(platform);
String artifactPlatformReplaced = isNotBlank(platformReplaced) ? capitalize(platformReplaced) : "";
// add extra properties without clobbering existing keys
Map<String, Object> artifactProps = artifact.getResolvedExtraProperties(ARTIFACT + artifactPlatform);
artifactProps.keySet().stream().filter(k -> !props.containsKey(k)).forEach(k -> props.put(k, artifactProps.get(k)));
Path artifactPath = artifact.getEffectivePath(context, distribution);
long artifactSize = 0;
try {
artifactSize = Files.size(artifactPath);
} catch (IOException ignored) {
// this would be strange
context.getLogger().trace(ignored);
}
String artifactFile = artifact.getEffectivePath().getFileName().toString();
String artifactFileName = getFilename(artifactFile, FileType.getSupportedExtensions());
String artifactFileExtension = artifactFile.substring(artifactFileName.length());
String artifactFileFormat = artifactFileExtension.substring(1);
String artifactName = "";
String artifactVersion = "";
String projectVersion = context.getModel().getProject().getEffectiveVersion();
if (isNotBlank(projectVersion) && artifactFileName.contains(projectVersion)) {
artifactName = artifactFileName.substring(0, artifactFileName.indexOf(projectVersion));
if (artifactName.endsWith("-")) {
artifactName = artifactName.substring(0, artifactName.length() - 1);
}
artifactVersion = projectVersion;
}
projectVersion = context.getModel().getProject().getVersion();
if (isBlank(artifactName) && isNotBlank(projectVersion) && artifactFileName.contains(projectVersion)) {
artifactName = artifactFileName.substring(0, artifactFileName.indexOf(projectVersion));
if (artifactName.endsWith("-")) {
artifactName = artifactName.substring(0, artifactName.length() - 1);
}
artifactVersion = projectVersion;
}
String artifactOs = "";
String artifactArch = "";
if (isNotBlank(platform)) {
if (platform.contains("-")) {
String[] parts = platform.split("-");
artifactOs = parts[0];
artifactArch = parts[1];
}
}
safePut(props, ARTIFACT + artifactPlatform + NAME, artifactName);
safePut(props, ARTIFACT + artifactPlatform + VERSION, artifactVersion);
safePut(props, ARTIFACT + artifactPlatform + OS, artifactOs);
safePut(props, ARTIFACT + artifactPlatform + ARCH, artifactArch);
safePut(props, ARTIFACT + artifactPlatform + FILE, artifactFile);
safePut(props, ARTIFACT + artifactPlatform + SIZE, artifactSize);
safePut(props, ARTIFACT + artifactPlatform + FILE_NAME, artifactFileName);
safePut(props, ARTIFACT + artifactPlatform + FILE_EXTENSION, artifactFileExtension);
safePut(props, ARTIFACT + artifactPlatform + FILE_FORMAT, artifactFileFormat);
safePut(props, ARTIFACT + artifactPlatformReplaced + NAME, artifactName);
safePut(props, ARTIFACT + artifactPlatformReplaced + VERSION, artifactVersion);
safePut(props, ARTIFACT + artifactPlatformReplaced + OS, artifactOs);
safePut(props, ARTIFACT + artifactPlatformReplaced + ARCH, artifactArch);
safePut(props, ARTIFACT + artifactPlatformReplaced + FILE, artifactFile);
safePut(props, ARTIFACT + artifactPlatformReplaced + SIZE, artifactSize);
safePut(props, ARTIFACT + artifactPlatformReplaced + FILE_NAME, artifactFileName);
safePut(props, ARTIFACT + artifactPlatformReplaced + FILE_EXTENSION, artifactFileExtension);
safePut(props, ARTIFACT + artifactPlatformReplaced + FILE_FORMAT, artifactFileFormat);
for (Algorithm algorithm : context.getModel().getChecksum().getAlgorithms()) {
safePut(props, ARTIFACT + artifactPlatform + CHECKSUM + capitalize(algorithm.formatted()), artifact.getHash(algorithm));
safePut(props, ARTIFACT + artifactPlatformReplaced + CHECKSUM + capitalize(algorithm.formatted()), artifact.getHash(algorithm));
}
safePut(props, ARTIFACT + artifactPlatform + URL, artifactUrl);
safePut(props, ARTIFACT + artifactPlatformReplaced + URL, artifactUrl);
props.putAll(context.getModel().getUpload().resolveDownloadUrls(context, distribution, artifact, ARTIFACT + artifactPlatform));
props.putAll(context.getModel().getUpload().resolveDownloadUrls(context, distribution, artifact, ARTIFACT + artifactPlatformReplaced));
if (count == 1) {
props.putAll(context.getModel().getUpload().resolveDownloadUrls(context, distribution, artifact, DISTRIBUTION));
safePut(props, KEY_DISTRIBUTION_ARTIFACT, artifact);
safePut(props, KEY_DISTRIBUTION_URL, artifactUrl);
safePut(props, KEY_DISTRIBUTION_SIZE, artifactSize);
safePut(props, KEY_DISTRIBUTION_SHA_256, artifact.getHash(Algorithm.SHA_256));
for (Algorithm algorithm : context.getModel().getChecksum().getAlgorithms()) {
safePut(props, DISTRIBUTION + CHECKSUM + capitalize(algorithm.formatted()), artifact.getHash(algorithm));
}
safePut(props, KEY_DISTRIBUTION_ARTIFACT_PLATFORM, platform);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED, platformReplaced);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_NAME, artifactName);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_VERSION, artifactVersion);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_OS, artifactOs);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_ARCH, artifactArch);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_SIZE, artifactSize);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_FILE, artifactFile);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_FILE_NAME, artifactFileName);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION, artifactFileExtension);
safePut(props, KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT, artifactFileFormat);
safePut(props, KEY_ARTIFACT_PLATFORM, platform);
safePut(props, KEY_ARTIFACT_PLATFORM_REPLACED, platformReplaced);
safePut(props, KEY_ARTIFACT_NAME, artifactName);
safePut(props, KEY_ARTIFACT_VERSION, artifactVersion);
safePut(props, KEY_ARTIFACT_OS, artifactOs);
safePut(props, KEY_ARTIFACT_ARCH, artifactArch);
safePut(props, KEY_ARTIFACT_SIZE, artifactSize);
safePut(props, KEY_ARTIFACT_FILE, artifactFile);
safePut(props, KEY_ARTIFACT_FILE_NAME, artifactFileName);
safePut(props, KEY_ARTIFACT_FILE_EXTENSION, artifactFileExtension);
safePut(props, KEY_ARTIFACT_FILE_FORMAT, artifactFileFormat);
// add extra properties without clobbering existing keys
Map<String, Object> aprops = artifact.getResolvedExtraProperties();
Map<String, Object> bprops = new LinkedHashMap<>(aprops);
applyTemplates(aprops, bprops);
aprops.keySet().stream().filter(k -> !props.containsKey(k)).forEach(k -> props.put(k, aprops.get(k)));
}
}
return count > 0;
}
Aggregations