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; }