Search in sources :

Example 1 with KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT

use of org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT 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;
}
Also used : KEY_DISTRIBUTION_ARTIFACT_FILE(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE) KEY_ARTIFACT_OS(org.jreleaser.util.Constants.KEY_ARTIFACT_OS) KEY_REVERSE_REPO_HOST(org.jreleaser.util.Constants.KEY_REVERSE_REPO_HOST) Arrays(java.util.Arrays) CommandExecutor(org.jreleaser.util.command.CommandExecutor) KEY_DISTRIBUTION_URL(org.jreleaser.util.Constants.KEY_DISTRIBUTION_URL) KEY_ARTIFACT_FILE_EXTENSION(org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_EXTENSION) KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_EXTENSION) KEY_DISTRIBUTION_ARTIFACT_SIZE(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_SIZE) KEY_DISTRIBUTION_ARTIFACT_FILE_NAME(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_NAME) StringUtils.isNotBlank(org.jreleaser.util.StringUtils.isNotBlank) Map(java.util.Map) Path(java.nio.file.Path) KEY_DISTRIBUTION_SIZE(org.jreleaser.util.Constants.KEY_DISTRIBUTION_SIZE) KEY_DISTRIBUTION_ARTIFACT_PLATFORM(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM) KEY_ARTIFACT_FILE(org.jreleaser.util.Constants.KEY_ARTIFACT_FILE) KEY_ARTIFACT_FILE_FORMAT(org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_FORMAT) KEY_DISTRIBUTION_ARTIFACT(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT) Packager(org.jreleaser.model.Packager) KEY_ARTIFACT_SIZE(org.jreleaser.util.Constants.KEY_ARTIFACT_SIZE) Collectors(java.util.stream.Collectors) KEY_ARTIFACT_VERSION(org.jreleaser.util.Constants.KEY_ARTIFACT_VERSION) List(java.util.List) KEY_DISTRIBUTION_ARTIFACT_VERSION(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_VERSION) CommandException(org.jreleaser.util.command.CommandException) KEY_DISTRIBUTION_PREPARE_DIRECTORY(org.jreleaser.util.Constants.KEY_DISTRIBUTION_PREPARE_DIRECTORY) KEY_ARTIFACT_NAME(org.jreleaser.util.Constants.KEY_ARTIFACT_NAME) Command(org.jreleaser.util.command.Command) KEY_DISTRIBUTION_ARTIFACT_NAME(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_NAME) RB(org.jreleaser.bundle.RB) Artifacts(org.jreleaser.model.util.Artifacts) FileUtils(org.jreleaser.util.FileUtils) Artifact(org.jreleaser.model.Artifact) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PackagerProcessingException(org.jreleaser.model.packager.spi.PackagerProcessingException) KEY_ARTIFACT_FILE_NAME(org.jreleaser.util.Constants.KEY_ARTIFACT_FILE_NAME) StringUtils.isBlank(org.jreleaser.util.StringUtils.isBlank) MustacheUtils.applyTemplates(org.jreleaser.util.MustacheUtils.applyTemplates) LinkedHashMap(java.util.LinkedHashMap) StringUtils.getFilename(org.jreleaser.util.StringUtils.getFilename) KEY_ARTIFACT_PLATFORM(org.jreleaser.util.Constants.KEY_ARTIFACT_PLATFORM) KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_PLATFORM_REPLACED) JReleaserContext(org.jreleaser.model.JReleaserContext) StringUtils.capitalize(org.jreleaser.util.StringUtils.capitalize) KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_FILE_FORMAT) KEY_DISTRIBUTION_PACKAGE_DIRECTORY(org.jreleaser.util.Constants.KEY_DISTRIBUTION_PACKAGE_DIRECTORY) KEY_DISTRIBUTION_ARTIFACT_OS(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_OS) Distribution(org.jreleaser.model.Distribution) OutputStream(java.io.OutputStream) FileType(org.jreleaser.util.FileType) KEY_ARTIFACT_PLATFORM_REPLACED(org.jreleaser.util.Constants.KEY_ARTIFACT_PLATFORM_REPLACED) KEY_DISTRIBUTION_ARTIFACT_ARCH(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT_ARCH) Files(java.nio.file.Files) Algorithm(org.jreleaser.util.Algorithm) IOException(java.io.IOException) Consumer(java.util.function.Consumer) KEY_DISTRIBUTION_SHA_256(org.jreleaser.util.Constants.KEY_DISTRIBUTION_SHA_256) KEY_ARTIFACT_ARCH(org.jreleaser.util.Constants.KEY_ARTIFACT_ARCH) Collections(java.util.Collections) PackagerProcessor(org.jreleaser.model.packager.spi.PackagerProcessor) InputStream(java.io.InputStream) Path(java.nio.file.Path) IOException(java.io.IOException) Algorithm(org.jreleaser.util.Algorithm) Artifact(org.jreleaser.model.Artifact) LinkedHashMap(java.util.LinkedHashMap)

Aggregations

ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1 Map (java.util.Map)1 Consumer (java.util.function.Consumer)1 Collectors (java.util.stream.Collectors)1 RB (org.jreleaser.bundle.RB)1 Artifact (org.jreleaser.model.Artifact)1 Distribution (org.jreleaser.model.Distribution)1 JReleaserContext (org.jreleaser.model.JReleaserContext)1 Packager (org.jreleaser.model.Packager)1 PackagerProcessingException (org.jreleaser.model.packager.spi.PackagerProcessingException)1 PackagerProcessor (org.jreleaser.model.packager.spi.PackagerProcessor)1