From 046762ea64d1361ae8ce642f02168a30529f35c6 Mon Sep 17 00:00:00 2001 From: Andres Almiray Date: Sun, 28 Mar 2021 17:17:53 +0200 Subject: [PATCH] Allow releases without files or distributions --- .../src/main/java/org/jreleaser/cli/Checksum.java | 3 +-- .../{tools/Checksums.java => checksum/Checksum.java} | 9 +++++++-- .../src/main/java/org/jreleaser/sign/Signer.java | 10 +++++++--- .../org/jreleaser/tools/DistributionProcessor.java | 3 ++- .../main/java/org/jreleaser/tools/Distributions.java | 5 +++++ .../org/jreleaser/model/JReleaserModelValidator.java | 5 ----- .../model/releaser/spi/AbstractReleaserBuilder.java | 3 --- .../org/jreleaser/ant/tasks/JReleaserChecksumTask.java | 4 ++-- .../gradle/plugin/tasks/JReleaserChecksumTask.groovy | 4 ++-- .../jreleaser/maven/plugin/JReleaserChecksumMojo.java | 4 ++-- .../src/main/java/org/jreleaser/sdk/github/Github.java | 5 +++-- .../java/org/jreleaser/sdk/github/GithubReleaser.java | 5 +++-- 12 files changed, 34 insertions(+), 26 deletions(-) rename core/jreleaser-engine/src/main/java/org/jreleaser/{tools/Checksums.java => checksum/Checksum.java} (96%) diff --git a/apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java b/apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java index 84444abd..5d11fd70 100644 --- a/apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java +++ b/apps/jreleaser/src/main/java/org/jreleaser/cli/Checksum.java @@ -18,7 +18,6 @@ package org.jreleaser.cli; import org.jreleaser.model.JReleaserContext; -import org.jreleaser.tools.Checksums; import picocli.CommandLine; /** @@ -34,6 +33,6 @@ public class Checksum extends AbstractModelCommand { } static void checksum(JReleaserContext context) { - Checksums.collectAndWriteChecksums(context); + org.jreleaser.checksum.Checksum.collectAndWriteChecksums(context); } } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/tools/Checksums.java b/core/jreleaser-engine/src/main/java/org/jreleaser/checksum/Checksum.java similarity index 96% rename from core/jreleaser-engine/src/main/java/org/jreleaser/tools/Checksums.java rename to core/jreleaser-engine/src/main/java/org/jreleaser/checksum/Checksum.java index 6087d94d..33bc1bd4 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/tools/Checksums.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/checksum/Checksum.java @@ -15,7 +15,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jreleaser.tools; +package org.jreleaser.checksum; import com.google.common.hash.HashCode; import com.google.common.hash.Hashing; @@ -37,7 +37,7 @@ import static org.jreleaser.util.JReleaserLogger.DEBUG_TAB; * @author Andres Almiray * @since 0.1.0 */ -public class Checksums { +public class Checksum { public static void collectAndWriteChecksums(JReleaserContext context) throws JReleaserException { context.getLogger().info("Calculating checksums"); @@ -56,6 +56,11 @@ public class Checksums { } } + if (checksums.isEmpty()) { + context.getLogger().info("No files configured for checksum. Skipping"); + return; + } + Path checksumsFilePath = context.getChecksumsDirectory().resolve("checksums.txt"); try { Files.createDirectories(context.getChecksumsDirectory()); diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/sign/Signer.java b/core/jreleaser-engine/src/main/java/org/jreleaser/sign/Signer.java index 716960fa..ccc97b72 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/sign/Signer.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/sign/Signer.java @@ -73,13 +73,17 @@ public class Signer { public static void sign(JReleaserContext context) throws SigningException { context.getLogger().info("Signing files"); if (!context.getModel().getSigning().isEnabled()) { - context.getLogger().info("Signing is not enabled"); + context.getLogger().info("Signing is not enabled. Skipping"); + return; + } + + List paths = collectArtifactsForSigning(context); + if (paths.isEmpty()) { + context.getLogger().info("No files configured for signing. Skipping"); return; } InMemoryKeyring keyring = createInMemoryKeyring(context.getModel().getSigning()); - - List paths = collectArtifactsForSigning(context); List files = sign(context, keyring, paths); verify(context, keyring, files); } diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/tools/DistributionProcessor.java b/core/jreleaser-engine/src/main/java/org/jreleaser/tools/DistributionProcessor.java index ef35c3cb..439e277d 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/tools/DistributionProcessor.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/tools/DistributionProcessor.java @@ -17,6 +17,7 @@ */ package org.jreleaser.tools; +import org.jreleaser.checksum.Checksum; import org.jreleaser.model.Artifact; import org.jreleaser.model.Distribution; import org.jreleaser.model.JReleaserContext; @@ -72,7 +73,7 @@ public class DistributionProcessor { context.getLogger().debug("Reading checksums for {} distribution", distributionName); for (int i = 0; i < distribution.getArtifacts().size(); i++) { Artifact artifact = distribution.getArtifacts().get(i); - Checksums.readHash(context, distributionName, artifact); + Checksum.readHash(context, distributionName, artifact); } return ToolProcessors.findProcessor(context, tool) diff --git a/core/jreleaser-engine/src/main/java/org/jreleaser/tools/Distributions.java b/core/jreleaser-engine/src/main/java/org/jreleaser/tools/Distributions.java index d4636dd1..16bbc9cc 100644 --- a/core/jreleaser-engine/src/main/java/org/jreleaser/tools/Distributions.java +++ b/core/jreleaser-engine/src/main/java/org/jreleaser/tools/Distributions.java @@ -32,6 +32,11 @@ import java.util.stream.Collectors; */ public class Distributions { public static void process(JReleaserContext context, boolean failFast, String action, ToolProcessingFunction function) { + if (context.getModel().getDistributions().isEmpty()) { + context.getLogger().debug("No configured distributions [" + action.toLowerCase() + "]. Skipping"); + return; + } + context.getLogger().info("{} distributions", action); List exceptions = new ArrayList<>(); for (Distribution distribution : context.getModel().getDistributions().values()) { diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java index 7f48fac7..5f7e3b1b 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java +++ b/core/jreleaser-model/src/main/java/org/jreleaser/model/JReleaserModelValidator.java @@ -411,11 +411,6 @@ public final class JReleaserModelValidator { private static void validateDistributions(JReleaserContext context, List errors) { Map distributions = context.getModel().getDistributions(); - if (distributions.isEmpty()) { - errors.add("Missing distributions configuration"); - return; - } - if (distributions.size() == 1) { distributions.values().stream() .findFirst().ifPresent(distribution -> distribution.setName(context.getModel().getProject().getName())); diff --git a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java b/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java index 44701796..5589b596 100644 --- a/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java +++ b/core/jreleaser-model/src/main/java/org/jreleaser/model/releaser/spi/AbstractReleaserBuilder.java @@ -70,9 +70,6 @@ public abstract class AbstractReleaserBuilder assets) throws IOException { for (Path asset : assets) { - if (0 == asset.toFile().length()) { - // do not upload empty files + if (0 == asset.toFile().length() || !Files.exists(asset)) { + // do not upload empty or non existent files continue; } diff --git a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java b/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java index 8db94206..dda9c762 100644 --- a/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java +++ b/sdks/github-java-sdk/src/main/java/org/jreleaser/sdk/github/GithubReleaser.java @@ -28,6 +28,7 @@ import org.kohsuke.github.GHRelease; import org.kohsuke.github.GHRepository; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -108,8 +109,8 @@ public class GithubReleaser implements Releaser { if (context.isDryrun()) { for (Path asset : assets) { - if (0 == asset.toFile().length()) { - // do not upload empty files + if (0 == asset.toFile().length() || !Files.exists(asset)) { + // do not upload empty or non existent files continue; }