Search in sources :

Example 1 with Sdkman

use of org.jreleaser.model.Sdkman in project jreleaser by jreleaser.

the class SdkmanAnnouncerValidator method validateSdkmanAnnouncer.

public static void validateSdkmanAnnouncer(JReleaserContext context, SdkmanAnnouncer sdkman, Errors errors) {
    // activate if there are any active distributions with Sdkman packager enabled
    context.getModel().getActiveDistributions().stream().filter(d -> d.getSdkman().isEnabled()).findFirst().ifPresent(distribution -> sdkman.setActive(Active.ALWAYS));
    if (!sdkman.resolveEnabled(context.getModel().getProject()))
        return;
    if (!context.getModel().getRelease().getGitService().isReleaseSupported()) {
        sdkman.disable();
        return;
    }
    context.getLogger().debug("announce.sdkman");
    sdkman.setConsumerKey(checkProperty(context, SDKMAN_CONSUMER_KEY, "sdkman.consumerKey", sdkman.getConsumerKey(), errors, context.isDryrun()));
    sdkman.setConsumerToken(checkProperty(context, SDKMAN_CONSUMER_TOKEN, "sdkman.consumerToken", sdkman.getConsumerToken(), errors, context.isDryrun()));
    Sdkman sdkmanPackager = context.getModel().getPackagers().getSdkman();
    if (isBlank(sdkman.getConsumerKey()) && sdkmanPackager.isEnabled()) {
        sdkman.setConsumerKey(sdkmanPackager.getConsumerKey());
    }
    if (isBlank(sdkman.getConsumerToken()) && sdkmanPackager.isEnabled()) {
        sdkman.setConsumerToken(sdkmanPackager.getConsumerToken());
    }
    if (isBlank(sdkman.getReleaseNotesUrl())) {
        sdkman.setReleaseNotesUrl(context.getModel().getRelease().getGitService().getReleaseNotesUrl());
    }
    if (context.getModel().getActiveDistributions().isEmpty()) {
        context.getLogger().warn(RB.$("validation_skdman_disable"));
        sdkman.disable();
    }
    if (null == sdkman.getCommand()) {
        sdkman.setCommand(Sdkman.Command.MAJOR);
    }
    validateTimeout(sdkman);
}
Also used : Sdkman(org.jreleaser.model.Sdkman)

Example 2 with Sdkman

use of org.jreleaser.model.Sdkman in project jreleaser by jreleaser.

the class SdkmanAnnouncer method announce.

@Override
public void announce() throws AnnounceException {
    Map<String, Distribution> distributions = context.getModel().getActiveDistributions().stream().filter(d -> d.getSdkman().isEnabled()).filter(d -> !JReleaserCommand.supportsPublish(context.getCommand()) || d.getSdkman().isPublished()).collect(Collectors.toMap(distribution -> {
        Sdkman sdkman = distribution.getSdkman();
        return isNotBlank(sdkman.getCandidate()) ? sdkman.getCandidate().trim() : context.getModel().getProject().getName();
    }, distribution -> distribution));
    Boolean set = (Boolean) context.getModel().getAnnounce().getSdkman().getExtraProperties().remove(MAGIC_SET);
    if (distributions.isEmpty()) {
        if (set == null || !set) {
            announceProject();
        } else {
            context.getLogger().debug(RB.$("announcers.announcer.disabled"));
        }
        return;
    }
    boolean failures = false;
    for (Map.Entry<String, Distribution> e : distributions.entrySet()) {
        String candidate = e.getKey();
        Distribution distribution = e.getValue();
        Sdkman sdkman = distribution.getSdkman();
        Map<String, Object> props = context.fullProps();
        props.putAll(distribution.props());
        String releaseNotesUrl = resolveTemplate(sdkman.getReleaseNotesUrl(), props);
        String command = sdkman.getCommand().name().toLowerCase();
        context.getLogger().info(RB.$("sdkman.release.announce"), command, candidate);
        try {
            AnnounceSdkmanCommand.builder(context.getLogger()).connectTimeout(sdkman.getConnectTimeout()).readTimeout(sdkman.getReadTimeout()).consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getResolvedConsumerKey()).consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getResolvedConsumerToken()).candidate(candidate).version(context.getModel().getProject().getVersion()).releaseNotesUrl(releaseNotesUrl).dryrun(context.isDryrun()).build().execute();
        } catch (SdkmanException x) {
            context.getLogger().warn(x.getMessage().trim());
            failures = true;
        }
    }
    if (failures) {
        throw new AnnounceException(RB.$("ERROR_sdkman_announce"));
    }
}
Also used : StringUtils.isTrue(org.jreleaser.util.StringUtils.isTrue) Sdkman(org.jreleaser.model.Sdkman) Collectors(java.util.stream.Collectors) StringUtils.isNotBlank(org.jreleaser.util.StringUtils.isNotBlank) LinkedHashMap(java.util.LinkedHashMap) AnnounceException(org.jreleaser.model.announcer.spi.AnnounceException) Announcer(org.jreleaser.model.announcer.spi.Announcer) JReleaserCommand(org.jreleaser.model.JReleaserCommand) Map(java.util.Map) MAGIC_SET(org.jreleaser.util.Constants.MAGIC_SET) JReleaserContext(org.jreleaser.model.JReleaserContext) SdkmanHelper.collectArtifacts(org.jreleaser.model.util.SdkmanHelper.collectArtifacts) Distribution(org.jreleaser.model.Distribution) RB(org.jreleaser.bundle.RB) Templates.resolveTemplate(org.jreleaser.util.Templates.resolveTemplate) AnnounceException(org.jreleaser.model.announcer.spi.AnnounceException) Sdkman(org.jreleaser.model.Sdkman) Distribution(org.jreleaser.model.Distribution) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 3 with Sdkman

use of org.jreleaser.model.Sdkman in project jreleaser by jreleaser.

the class SdkmanPackagerProcessor method doPublishDistribution.

@Override
protected void doPublishDistribution(Distribution distribution, Map<String, Object> props) throws PackagerProcessingException {
    org.jreleaser.model.Sdkman sdkman = distribution.getSdkman();
    Map<String, String> platforms = new LinkedHashMap<>();
    // collect artifacts by supported SDKMAN! platform
    SdkmanHelper.collectArtifacts(context, distribution, platforms);
    try {
        String candidate = isNotBlank(sdkman.getCandidate()) ? sdkman.getCandidate().trim() : context.getModel().getProject().getName();
        String releaseNotesUrl = resolveTemplate(sdkman.getReleaseNotesUrl(), props);
        switch(sdkman.getCommand()) {
            case MAJOR:
                context.getLogger().info(RB.$("sdkman.publish.major"), candidate);
                MajorReleaseSdkmanCommand.builder(context.getLogger()).connectTimeout(sdkman.getConnectTimeout()).readTimeout(sdkman.getReadTimeout()).consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getResolvedConsumerKey()).consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getResolvedConsumerToken()).candidate(candidate).version(context.getModel().getProject().getVersion()).platforms(platforms).releaseNotesUrl(releaseNotesUrl).dryrun(context.isDryrun()).skipAnnounce(true).build().execute();
                break;
            case MINOR:
                context.getLogger().info(RB.$("sdkman.publish.minor"), candidate);
                MinorReleaseSdkmanCommand.builder(context.getLogger()).connectTimeout(sdkman.getConnectTimeout()).readTimeout(sdkman.getReadTimeout()).consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getResolvedConsumerKey()).consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getResolvedConsumerToken()).candidate(candidate).version(context.getModel().getProject().getVersion()).platforms(platforms).releaseNotesUrl(releaseNotesUrl).dryrun(context.isDryrun()).skipAnnounce(true).build().execute();
                break;
        }
        sdkman.setPublished(true);
    } catch (SdkmanException e) {
        throw new PackagerProcessingException(e);
    }
}
Also used : Sdkman(org.jreleaser.model.Sdkman) PackagerProcessingException(org.jreleaser.model.packager.spi.PackagerProcessingException) SdkmanException(org.jreleaser.sdk.sdkman.SdkmanException) LinkedHashMap(java.util.LinkedHashMap)

Example 4 with Sdkman

use of org.jreleaser.model.Sdkman in project jreleaser by jreleaser.

the class SdkmanValidator method validateSdkman.

public static void validateSdkman(JReleaserContext context, Distribution distribution, Sdkman packager, Errors errors) {
    JReleaserModel model = context.getModel();
    Sdkman parentPackager = model.getPackagers().getSdkman();
    boolean packagerSet = packager.isActiveSet();
    boolean parentPackagerSet = parentPackager.isActiveSet();
    packager.getExtraProperties().put(MAGIC_SET, packagerSet || parentPackagerSet);
    if (!packager.isActiveSet() && parentPackager.isActiveSet()) {
        packager.setActive(parentPackager.getActive());
    }
    if (!packager.resolveEnabled(context.getModel().getProject(), distribution))
        return;
    GitService service = model.getRelease().getGitService();
    if (!service.isReleaseSupported()) {
        packager.disable();
        return;
    }
    context.getLogger().debug("distribution.{}.sdkman", distribution.getName());
    List<Artifact> candidateArtifacts = packager.resolveCandidateArtifacts(context, distribution);
    if (candidateArtifacts.size() == 0) {
        packager.setActive(Active.NEVER);
        packager.disable();
        return;
    }
    mergeExtraProperties(packager, parentPackager);
    validateContinueOnError(packager, parentPackager);
    if (isBlank(packager.getDownloadUrl())) {
        packager.setDownloadUrl(parentPackager.getDownloadUrl());
    }
    if (null == packager.getCommand()) {
        packager.setCommand(parentPackager.getCommand());
        if (null == packager.getCommand()) {
            packager.setCommand(Sdkman.Command.MAJOR);
        }
    }
    if (isBlank(packager.getCandidate())) {
        packager.setCandidate(parentPackager.getCandidate());
        if (isBlank(packager.getCandidate())) {
            packager.setCandidate(distribution.getName());
        }
    }
    if (isBlank(packager.getReleaseNotesUrl())) {
        packager.setReleaseNotesUrl(parentPackager.getReleaseNotesUrl());
        if (isBlank(packager.getReleaseNotesUrl())) {
            packager.setReleaseNotesUrl(service.getReleaseNotesUrl());
        }
    }
    if (isBlank(packager.getConsumerKey())) {
        packager.setConsumerKey(parentPackager.getConsumerKey());
    }
    if (isBlank(packager.getConsumerToken())) {
        packager.setConsumerToken(parentPackager.getConsumerToken());
    }
    packager.setConsumerKey(checkProperty(context, SDKMAN_CONSUMER_KEY, "sdkman.consumerKey", packager.getConsumerKey(), errors, context.isDryrun()));
    packager.setConsumerToken(checkProperty(context, SDKMAN_CONSUMER_TOKEN, "sdkman.consumerToken", packager.getConsumerToken(), errors, context.isDryrun()));
    validateTimeout(packager);
    validateArtifactPlatforms(context, distribution, packager, candidateArtifacts, errors);
}
Also used : Sdkman(org.jreleaser.model.Sdkman) JReleaserModel(org.jreleaser.model.JReleaserModel) GitService(org.jreleaser.model.GitService) Artifact(org.jreleaser.model.Artifact)

Aggregations

Sdkman (org.jreleaser.model.Sdkman)4 LinkedHashMap (java.util.LinkedHashMap)2 Map (java.util.Map)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 GitService (org.jreleaser.model.GitService)1 JReleaserCommand (org.jreleaser.model.JReleaserCommand)1 JReleaserContext (org.jreleaser.model.JReleaserContext)1 JReleaserModel (org.jreleaser.model.JReleaserModel)1 AnnounceException (org.jreleaser.model.announcer.spi.AnnounceException)1 Announcer (org.jreleaser.model.announcer.spi.Announcer)1 PackagerProcessingException (org.jreleaser.model.packager.spi.PackagerProcessingException)1 SdkmanHelper.collectArtifacts (org.jreleaser.model.util.SdkmanHelper.collectArtifacts)1 SdkmanException (org.jreleaser.sdk.sdkman.SdkmanException)1 MAGIC_SET (org.jreleaser.util.Constants.MAGIC_SET)1 StringUtils.isNotBlank (org.jreleaser.util.StringUtils.isNotBlank)1 StringUtils.isTrue (org.jreleaser.util.StringUtils.isTrue)1 Templates.resolveTemplate (org.jreleaser.util.Templates.resolveTemplate)1