• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jreleaser / jreleaser / #510

27 Jul 2025 12:31PM UTC coverage: 45.783% (-3.6%) from 49.39%
#510

push

github

aalmiray
feat(packagers): Stage distribution publication in a fixed directory

Closes #1943

12 of 25 new or added lines in 4 files covered. (48.0%)

2208 existing lines in 190 files now uncovered.

23924 of 52255 relevant lines covered (45.78%)

0.46 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

14.89
/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java
1
/*
2
 * SPDX-License-Identifier: Apache-2.0
3
 *
4
 * Copyright 2020-2025 The JReleaser authors.
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     https://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
package org.jreleaser.packagers;
19

20
import org.jreleaser.bundle.RB;
21
import org.jreleaser.model.Sdkman;
22
import org.jreleaser.model.internal.JReleaserContext;
23
import org.jreleaser.model.internal.distributions.Distribution;
24
import org.jreleaser.model.internal.packagers.SdkmanPackager;
25
import org.jreleaser.model.internal.util.SdkmanHelper;
26
import org.jreleaser.model.spi.packagers.PackagerProcessingException;
27
import org.jreleaser.mustache.TemplateContext;
28
import org.jreleaser.sdk.sdkman.MajorReleaseSdkmanCommand;
29
import org.jreleaser.sdk.sdkman.MinorReleaseSdkmanCommand;
30
import org.jreleaser.sdk.sdkman.SdkmanException;
31

32
import java.util.LinkedHashMap;
33
import java.util.Map;
34

35
import static org.jreleaser.model.Constants.KEY_SDKMAN_CANDIDATE;
36
import static org.jreleaser.model.Constants.KEY_SDKMAN_RELEASE_NOTES_URL;
37
import static org.jreleaser.mustache.Templates.resolveTemplate;
38
import static org.jreleaser.util.StringUtils.isNotBlank;
39

40
/**
41
 * @author Andres Almiray
42
 * @since 0.6.0
43
 */
44
public class SdkmanPackagerProcessor extends AbstractPackagerProcessor<SdkmanPackager> {
45
    public SdkmanPackagerProcessor(JReleaserContext context) {
46
        super(context);
1✔
47
    }
1✔
48

49
    @Override
50
    protected void doPrepareDistribution(Distribution distribution, TemplateContext props) throws PackagerProcessingException {
51
        // noop
52
    }
1✔
53

54
    @Override
55
    protected void doPackageDistribution(Distribution distribution, TemplateContext props) throws PackagerProcessingException {
56
        // noop
57
    }
1✔
58

59
    @Override
60
    protected void doPublishDistribution(Distribution distribution, TemplateContext props) throws PackagerProcessingException {
UNCOV
61
        SdkmanPackager sdkman = distribution.getSdkman();
×
62

UNCOV
63
        Map<String, String> platforms = new LinkedHashMap<>();
×
64
        // collect artifacts by supported SDKMAN! platform
UNCOV
65
        SdkmanHelper.collectArtifacts(context, distribution, platforms);
×
66

67
        try {
UNCOV
68
            String candidate = isNotBlank(sdkman.getCandidate()) ? sdkman.getCandidate().trim() : context.getModel().getProject().getName();
×
UNCOV
69
            String releaseNotesUrl = resolveTemplate(sdkman.getReleaseNotesUrl(), props);
×
70

UNCOV
71
            if (sdkman.getCommand() == Sdkman.Command.MAJOR) {
×
UNCOV
72
                context.getLogger().info(RB.$("sdkman.publish.major"), candidate);
×
UNCOV
73
                MajorReleaseSdkmanCommand.builder(context.asImmutable())
×
UNCOV
74
                    .connectTimeout(sdkman.getConnectTimeout())
×
UNCOV
75
                    .readTimeout(sdkman.getReadTimeout())
×
UNCOV
76
                    .consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerKey())
×
UNCOV
77
                    .consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerToken())
×
UNCOV
78
                    .candidate(candidate)
×
UNCOV
79
                    .version(context.getModel().getProject().getVersion())
×
UNCOV
80
                    .platforms(platforms)
×
UNCOV
81
                    .releaseNotesUrl(releaseNotesUrl)
×
UNCOV
82
                    .dryrun(context.isDryrun())
×
UNCOV
83
                    .skipAnnounce(false)
×
UNCOV
84
                    .build()
×
UNCOV
85
                    .execute();
×
86
            } else if (sdkman.getCommand() == Sdkman.Command.MINOR) {
×
87
                context.getLogger().info(RB.$("sdkman.publish.minor"), candidate);
×
88
                MinorReleaseSdkmanCommand.builder(context.asImmutable())
×
89
                    .connectTimeout(sdkman.getConnectTimeout())
×
90
                    .readTimeout(sdkman.getReadTimeout())
×
91
                    .consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerKey())
×
92
                    .consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerToken())
×
93
                    .candidate(candidate)
×
94
                    .version(context.getModel().getProject().getVersion())
×
95
                    .platforms(platforms)
×
96
                    .releaseNotesUrl(releaseNotesUrl)
×
97
                    .dryrun(context.isDryrun())
×
98
                    .skipAnnounce(false)
×
99
                    .build()
×
100
                    .execute();
×
101
            }
102

UNCOV
103
            sdkman.setPublished(true);
×
104
        } catch (SdkmanException e) {
×
105
            throw new PackagerProcessingException(e);
×
UNCOV
106
        }
×
UNCOV
107
    }
×
108

109
    @Override
110
    protected void fillPackagerProperties(TemplateContext props, Distribution distribution) {
111
        props.set(KEY_SDKMAN_CANDIDATE, packager.getCandidate());
1✔
112
        props.set(KEY_SDKMAN_RELEASE_NOTES_URL, resolveTemplate(packager.getReleaseNotesUrl(), props));
1✔
113
    }
1✔
114
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc