Search in sources :

Example 1 with KEY_DISTRIBUTION_ARTIFACT

use of org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT in project jreleaser by jreleaser.

the class SpecPackagerProcessor method setupJavaBinary.

private void setupJavaBinary(Distribution distribution, Map<String, Object> props) throws PackagerProcessingException {
    Artifact artifact = (Artifact) props.get(KEY_DISTRIBUTION_ARTIFACT);
    Path artifactPath = artifact.getResolvedPath(context, distribution);
    String artifactFileName = getFilename(artifactPath.getFileName().toString(), packager.getSupportedExtensions(distribution));
    try {
        List<String> entries = FileUtils.inspectArchive(artifactPath);
        Set<String> directories = new LinkedHashSet<>();
        List<String> binaries = new ArrayList<>();
        List<String> files = new ArrayList<>();
        entries.stream().filter(e -> !e.endsWith(distribution.getExecutable().resolveWindowsExtension())).filter(e -> !e.endsWith("/")).map(e -> e.substring(artifactFileName.length() + 1)).filter(e -> e.startsWith("bin/")).sorted().forEach(entry -> {
            String[] parts = entry.split("/");
            binaries.add(parts[1]);
        });
        entries.stream().filter(e -> !e.endsWith(distribution.getExecutable().resolveWindowsExtension())).filter(e -> !e.endsWith("/")).map(e -> e.substring(artifactFileName.length() + 1)).filter(e -> !e.startsWith("bin/")).sorted().forEach(entry -> {
            String[] parts = entry.split("/");
            if (parts.length > 1)
                directories.add(parts[0]);
            files.add(entry);
        });
        props.put(KEY_PROJECT_VERSION, context.getModel().getProject().version().toRpmVersion());
        props.put(KEY_SPEC_DIRECTORIES, directories);
        props.put(KEY_SPEC_BINARIES, binaries);
        props.put(KEY_SPEC_FILES, files);
    } catch (IOException e) {
        throw new PackagerProcessingException("ERROR", e);
    }
}
Also used : Path(java.nio.file.Path) LinkedHashSet(java.util.LinkedHashSet) KEY_PROJECT_VERSION(org.jreleaser.util.Constants.KEY_PROJECT_VERSION) TemplateUtils.trimTplExtension(org.jreleaser.templates.TemplateUtils.trimTplExtension) FileUtils(org.jreleaser.util.FileUtils) Artifact(org.jreleaser.model.Artifact) KEY_SPEC_DIRECTORIES(org.jreleaser.util.Constants.KEY_SPEC_DIRECTORIES) PackagerProcessingException(org.jreleaser.model.packager.spi.PackagerProcessingException) KEY_SPEC_FILES(org.jreleaser.util.Constants.KEY_SPEC_FILES) Set(java.util.Set) KEY_DISTRIBUTION_ARTIFACT(org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT) IOException(java.io.IOException) KEY_SPEC_BINARIES(org.jreleaser.util.Constants.KEY_SPEC_BINARIES) ArrayList(java.util.ArrayList) Project(org.jreleaser.model.Project) List(java.util.List) KEY_SPEC_REQUIRES(org.jreleaser.util.Constants.KEY_SPEC_REQUIRES) StringUtils.getFilename(org.jreleaser.util.StringUtils.getFilename) Spec(org.jreleaser.model.Spec) Map(java.util.Map) JReleaserContext(org.jreleaser.model.JReleaserContext) KEY_SPEC_RELEASE(org.jreleaser.util.Constants.KEY_SPEC_RELEASE) Distribution(org.jreleaser.model.Distribution) Path(java.nio.file.Path) LinkedHashSet(java.util.LinkedHashSet) KEY_SPEC_PACKAGE_NAME(org.jreleaser.util.Constants.KEY_SPEC_PACKAGE_NAME) ArrayList(java.util.ArrayList) PackagerProcessingException(org.jreleaser.model.packager.spi.PackagerProcessingException) IOException(java.io.IOException) Artifact(org.jreleaser.model.Artifact)

Example 2 with KEY_DISTRIBUTION_ARTIFACT

use of org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT 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

IOException (java.io.IOException)2 Path (java.nio.file.Path)2 List (java.util.List)2 Map (java.util.Map)2 Artifact (org.jreleaser.model.Artifact)2 Distribution (org.jreleaser.model.Distribution)2 JReleaserContext (org.jreleaser.model.JReleaserContext)2 PackagerProcessingException (org.jreleaser.model.packager.spi.PackagerProcessingException)2 KEY_DISTRIBUTION_ARTIFACT (org.jreleaser.util.Constants.KEY_DISTRIBUTION_ARTIFACT)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 InputStream (java.io.InputStream)1 OutputStream (java.io.OutputStream)1 Files (java.nio.file.Files)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 LinkedHashMap (java.util.LinkedHashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 Set (java.util.Set)1 Consumer (java.util.function.Consumer)1