From 5f56576dcc60731aff2d847e8468059fcf15f0c2 Mon Sep 17 00:00:00 2001 From: Andres Almiray Date: Fri, 16 Jul 2021 19:34:49 +0200 Subject: [PATCH] [core] skip properties should have a defined value. Fixes #292 --- .../src/main/java/org/jreleaser/model/Upload.java | 8 +++++++- .../org/jreleaser/model/validation/BrewValidator.java | 5 +++-- .../main/java/org/jreleaser/tools/BrewToolProcessor.java | 5 +++-- .../src/main/java/org/jreleaser/util/StringUtils.java | 6 ++++++ .../jreleaser/sdk/commons/AbstractArtifactUploader.java | 9 ++++++++- .../java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java | 7 ++++--- 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/Upload.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/Upload.java index ea50d215..dea9ff68 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/Upload.java +++ b/core/jreleaser-model/src/main/java/org/jreleaser/model/Upload.java @@ -27,6 +27,7 @@ import java.util.stream.Collectors; import static org.jreleaser.util.StringUtils.capitalize; import static org.jreleaser.util.StringUtils.getClassNameForLowerCaseHyphenSeparatedName; import static org.jreleaser.util.StringUtils.isBlank; +import static org.jreleaser.util.StringUtils.isTrue; /** * @author Andres Almiray @@ -202,6 +203,11 @@ public class Upload implements Domain, EnabledAware { } private boolean isSkip(Map props, List keys) { - return props.keySet().stream().anyMatch(keys::contains); + for (String key : keys) { + if (props.containsKey(key) && isTrue(props.get(key))) { + return true; + } + } + return false; } } diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java index 00074a98..51f40b05 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java +++ b/core/jreleaser-model/src/main/java/org/jreleaser/model/validation/BrewValidator.java @@ -39,6 +39,7 @@ import static org.jreleaser.model.validation.ExtraPropertiesValidator.mergeExtra import static org.jreleaser.model.validation.TemplateValidator.validateTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; +import static org.jreleaser.util.StringUtils.isTrue; /** * @author Andres Almiray @@ -114,9 +115,9 @@ public abstract class BrewValidator extends Validator { int pkgFound = 0; String pkgName = ""; for (Artifact artifact : distribution.getArtifacts()) { - if (artifact.getPath().endsWith(".dmg") && !artifact.getExtraProperties().containsKey("skipBrew")) + if (artifact.getPath().endsWith(".dmg") && !isTrue(artifact.getExtraProperties().get("skipBrew"))) dmgFound++; - if (artifact.getPath().endsWith(".pkg") && !artifact.getExtraProperties().containsKey("skipBrew")) { + if (artifact.getPath().endsWith(".pkg") && !isTrue(artifact.getExtraProperties().get("skipBrew"))) { pkgFound++; pkgName = artifact.getEffectivePath(context).getFileName().toString(); } diff --git a/core/jreleaser-tools/src/main/java/org/jreleaser/tools/BrewToolProcessor.java b/core/jreleaser-tools/src/main/java/org/jreleaser/tools/BrewToolProcessor.java index 97447b6b..a20192a5 100644 --- a/core/jreleaser-tools/src/main/java/org/jreleaser/tools/BrewToolProcessor.java +++ b/core/jreleaser-tools/src/main/java/org/jreleaser/tools/BrewToolProcessor.java @@ -34,6 +34,7 @@ import static org.jreleaser.templates.TemplateUtils.trimTplExtension; import static org.jreleaser.util.MustacheUtils.applyTemplate; import static org.jreleaser.util.MustacheUtils.passThrough; import static org.jreleaser.util.StringUtils.isNotBlank; +import static org.jreleaser.util.StringUtils.isTrue; /** * @author Andres Almiray @@ -72,8 +73,8 @@ public class BrewToolProcessor extends AbstractRepositoryToolProcessor { if ((distribution.getType() == Distribution.DistributionType.JAVA_BINARY || distribution.getType() == Distribution.DistributionType.SINGLE_JAR) && - !tool.getExtraProperties().containsKey("javaSkip") && - !tool.getExtraProperties().containsKey("skipJava")) { + !isTrue(tool.getExtraProperties().get("javaSkip")) && + !isTrue(tool.getExtraProperties().get("skipJava"))) { tool.addDependency("openjdk@" + props.get(Constants.KEY_DISTRIBUTION_JAVA_VERSION)); } else if (distribution.getType() == Distribution.DistributionType.NATIVE_PACKAGE) { props.put(Constants.KEY_BREW_CASK_NAME, tool.getCask().getResolvedCaskName(props)); diff --git a/core/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java b/core/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java index 12fe6cfd..b2c200f9 100644 --- a/core/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java +++ b/core/jreleaser-utils/src/main/java/org/jreleaser/util/StringUtils.java @@ -639,4 +639,10 @@ public class StringUtils { public static Pattern toSafePattern(String str) { return Pattern.compile(toSafeRegexPattern(str)); } + + public static boolean isTrue(Object o) { + if (o == null) return false; + if (o instanceof Boolean) return (Boolean) o; + return "true".equalsIgnoreCase(String.valueOf(o).trim()); + } } diff --git a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java b/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java index c8480cc8..a2956321 100644 --- a/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java +++ b/sdks/java-sdk-commons/src/main/java/org/jreleaser/sdk/commons/AbstractArtifactUploader.java @@ -30,6 +30,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import static org.jreleaser.util.StringUtils.isTrue; + /** * @author Andres Almiray * @since 0.4.0 @@ -88,6 +90,11 @@ public abstract class AbstractArtifactUploader implements Ar } private boolean isSkip(Map props, List keys) { - return props.keySet().stream().anyMatch(keys::contains); + for (String key : keys) { + if (props.containsKey(key) && isTrue(props.get(key))) { + return true; + } + } + return false; } } diff --git a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java b/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java index 5932a636..53fbf8af 100644 --- a/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java +++ b/sdks/sdkman-java-sdk/src/main/java/org/jreleaser/sdk/sdkman/SdkmanAnnouncer.java @@ -30,6 +30,7 @@ import java.util.Map; import static org.jreleaser.util.MustacheUtils.applyTemplate; import static org.jreleaser.util.StringUtils.isBlank; import static org.jreleaser.util.StringUtils.isNotBlank; +import static org.jreleaser.util.StringUtils.isTrue; /** * @author Andres Almiray @@ -68,7 +69,7 @@ public class SdkmanAnnouncer implements Announcer { continue; } - if (artifact.getExtraProperties().containsKey("skipSdkman")) { + if (isTrue(artifact.getExtraProperties().get("skipSdkman"))) { context.getLogger().debug("Artifact {} is explicitly skipped.", artifact.getEffectivePath(context, distribution).getFileName()); continue; @@ -130,8 +131,8 @@ public class SdkmanAnnouncer implements Announcer { return (distribution.getType() == Distribution.DistributionType.JAVA_BINARY || distribution.getType() == Distribution.DistributionType.JLINK || distribution.getType() == Distribution.DistributionType.NATIVE_IMAGE) && - !distribution.getExtraProperties().containsKey("sdkmanSkip") && - !distribution.getExtraProperties().containsKey("skipSdkman"); + !isTrue(distribution.getExtraProperties().get("sdkmanSkip")) && + !isTrue(distribution.getExtraProperties().get("skipSdkman")); } private String mapPlatform(String platform) {