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);
}
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"));
}
}
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);
}
}
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);
}
Aggregations