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

jreleaser / jreleaser / #556

22 Nov 2025 04:17PM UTC coverage: 46.213% (-2.0%) from 48.203%
#556

push

github

aalmiray
feat(jdks): Allow filtering by platform

Closes #2000

Co-authored-by: Ixchel Ruiz <ixchelruiz@yahoo.com>

0 of 42 new or added lines in 5 files covered. (0.0%)

1116 existing lines in 107 files now uncovered.

24939 of 53965 relevant lines covered (46.21%)

0.46 hits per line

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

44.33
/plugins/jreleaser/src/main/java/org/jreleaser/cli/internal/ColorizedJReleaserLoggerAdapter.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.cli.internal;
19

20
import org.jreleaser.logging.AbstractJReleaserLogger;
21
import org.slf4j.helpers.MessageFormatter;
22
import picocli.CommandLine;
23

24
import java.io.PrintWriter;
25

26
/**
27
 * @author Andres Almiray
28
 * @since 0.1.0
29
 */
30
public class ColorizedJReleaserLoggerAdapter extends AbstractJReleaserLogger {
31
    private final PrintWriter out;
32
    private final Level level;
33

34
    public ColorizedJReleaserLoggerAdapter(PrintWriter tracer, PrintWriter out) {
35
        this(tracer, out, Level.WARN);
×
36
    }
×
37

38
    public ColorizedJReleaserLoggerAdapter(PrintWriter tracer, PrintWriter out, Level level) {
39
        super(tracer);
1✔
40
        this.out = out;
1✔
41
        this.level = level;
1✔
42
    }
1✔
43

44
    @Override
45
    public void plain(String message) {
46
        String msg = formatMessage(message);
1✔
47
        out.println(msg);
1✔
48
        trace(msg);
1✔
49
    }
1✔
50

51
    @Override
52
    public void debug(String message) {
53
        String msg = formatMessage(message);
1✔
54
        if (isLevelEnabled(Level.DEBUG)) {
1✔
55
            out.println(Level.DEBUG + msg);
×
56
        }
57
        trace(Level.DEBUG.asString() + msg);
1✔
58
    }
1✔
59

60
    @Override
61
    public void info(String message) {
62
        String msg = formatMessage(message);
1✔
63
        if (isLevelEnabled(Level.INFO)) {
1✔
64
            out.println(Level.INFO + msg);
1✔
65
        }
66
        trace(Level.INFO.asString() + msg);
1✔
67
    }
1✔
68

69
    @Override
70
    public void warn(String message) {
UNCOV
71
        String msg = formatMessage(message);
×
UNCOV
72
        if (isLevelEnabled(Level.WARN)) {
×
UNCOV
73
            out.println(Level.WARN + msg);
×
74
        }
UNCOV
75
        trace(Level.WARN.asString() + msg);
×
UNCOV
76
    }
×
77

78
    @Override
79
    public void error(String message) {
80
        String msg = formatMessage(message);
×
81
        if (isLevelEnabled(Level.ERROR)) {
×
82
            out.println(Level.ERROR + msg);
×
83
        }
84
        trace(Level.ERROR.asString() + msg);
×
85
    }
×
86

87
    @Override
88
    public void plain(String message, Object... args) {
89
        plain(MessageFormatter.arrayFormat(message, args).getMessage());
×
90
    }
×
91

92
    @Override
93
    public void debug(String message, Object... args) {
94
        String msg = formatMessage(MessageFormatter.arrayFormat(message, args).getMessage());
1✔
95
        if (isLevelEnabled(Level.DEBUG)) {
1✔
96
            out.println(Level.DEBUG + msg);
×
97
        }
98
        trace(Level.DEBUG.asString() + msg);
1✔
99
    }
1✔
100

101
    @Override
102
    public void info(String message, Object... args) {
103
        String msg = formatMessage(MessageFormatter.arrayFormat(message, args).getMessage());
1✔
104
        if (isLevelEnabled(Level.INFO)) {
1✔
105
            out.println(Level.INFO + msg);
1✔
106
        }
107
        trace(Level.INFO.asString() + msg);
1✔
108
    }
1✔
109

110
    @Override
111
    public void warn(String message, Object... args) {
UNCOV
112
        String msg = formatMessage(MessageFormatter.arrayFormat(message, args).getMessage());
×
UNCOV
113
        if (isLevelEnabled(Level.WARN)) {
×
UNCOV
114
            out.println(Level.WARN + msg);
×
115
        }
UNCOV
116
        trace(Level.WARN.asString() + msg);
×
UNCOV
117
    }
×
118

119
    @Override
120
    public void error(String message, Object... args) {
121
        String msg = formatMessage(MessageFormatter.arrayFormat(message, args).getMessage());
1✔
122
        if (isLevelEnabled(Level.ERROR)) {
1✔
123
            out.println(Level.ERROR + msg);
1✔
124
        }
125
        trace(Level.ERROR.asString() + msg);
1✔
126
    }
1✔
127

128
    @Override
129
    public void plain(String message, Throwable throwable) {
130
        String msg = formatMessage(message);
×
131
        out.println(msg);
×
132
        if (null != throwable) {
×
133
            throwable.printStackTrace(out);
×
134
        }
135
        trace(msg, throwable);
×
136
    }
×
137

138
    @Override
139
    public void debug(String message, Throwable throwable) {
140
        String msg = formatMessage(message);
×
141
        if (isLevelEnabled(Level.DEBUG)) {
×
142
            out.println(Level.DEBUG + msg);
×
143
            printThrowable(throwable);
×
144
        }
145
        trace(Level.DEBUG.asString() + msg, throwable);
×
146
    }
×
147

148
    @Override
149
    public void info(String message, Throwable throwable) {
150
        String msg = formatMessage(message);
×
151
        if (isLevelEnabled(Level.INFO)) {
×
152
            out.println(Level.INFO + msg);
×
153
            printThrowable(throwable);
×
154
        }
155
        trace(Level.INFO.asString() + msg, throwable);
×
156
    }
×
157

158
    @Override
159
    public void warn(String message, Throwable throwable) {
160
        String msg = formatMessage(message);
×
161
        if (isLevelEnabled(Level.WARN)) {
×
162
            out.println(Level.WARN + msg);
×
163
            printThrowable(throwable);
×
164
        }
165
        trace(Level.WARN.asString() + msg, throwable);
×
166
    }
×
167

168
    @Override
169
    public void error(String message, Throwable throwable) {
170
        String msg = formatMessage(message);
×
171
        if (isLevelEnabled(Level.ERROR)) {
×
172
            out.println(Level.ERROR + msg);
×
173
            printThrowable(throwable);
×
174
        }
175
        trace(Level.ERROR.asString() + msg, throwable);
×
176
    }
×
177

178
    private void printThrowable(Throwable throwable) {
179
        if (null != throwable) {
×
180
            throwable.printStackTrace(new Colorizer(out));
×
181
        }
182
    }
×
183

184
    private boolean isLevelEnabled(Level requested) {
185
        return requested.ordinal() >= level.ordinal();
1✔
186
    }
187

188
    public enum Level {
1✔
189
        DEBUG("cyan"),
1✔
190
        INFO("blue"),
1✔
191
        WARN("yellow"),
1✔
192
        ERROR("red");
1✔
193

194
        private final String color;
195

196
        Level(String color) {
1✔
197
            this.color = color;
1✔
198
        }
1✔
199

200
        @Override
201
        public String toString() {
202
            return "[" + colorize(name()) + "] " + (name().length() == 4 ? " " : "");
1✔
203
        }
204

205
        public String asString() {
206
            return "[" + name() + "] " + (name().length() == 4 ? " " : "");
1✔
207
        }
208

209
        private String colorize(String input) {
210
            return CommandLine.Help.Ansi.AUTO.string("@|" + color + " " + input + "|@");
1✔
211
        }
212
    }
213
}
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