From a02e78820eac0b1d4a75a04488fc156b02ca3129 Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Wed, 17 Jul 2024 21:25:24 -0400 Subject: [PATCH] Improvement to offline operation, now pushed to the actual operations instead of the commands --- lib/bld/bld-wrapper.jar | Bin 29818 -> 29818 bytes lib/bld/bld-wrapper.properties | 2 +- src/main/java/rife/bld/BaseProject.java | 23 +++--------- src/main/java/rife/bld/BuildExecutor.java | 5 +-- src/main/java/rife/bld/Project.java | 7 +--- .../operations/DependencyTreeOperation.java | 33 +++++++++++++++++- .../bld/operations/DownloadOperation.java | 33 +++++++++++++++++- .../rife/bld/operations/PublishOperation.java | 31 ++++++++++++++++ .../rife/bld/operations/PurgeOperation.java | 33 +++++++++++++++++- .../TestDependencyTreeOperation.java | 3 ++ .../bld/operations/TestDownloadOperation.java | 3 ++ .../bld/operations/TestPublishOperation.java | 3 ++ .../bld/operations/TestPurgeOperation.java | 3 ++ 13 files changed, 146 insertions(+), 33 deletions(-) diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index 4b55ca26170e8125425bfb6b6e99cf35887dc2e4..1914147f7b77d9f665f024bf3bd1d999f24fcf27 100644 GIT binary patch delta 140 zcmezMg7Mc2MxFp~W)=|!4h{~6sVgV))H6+8xv}@OC6L-2Wp#`RNKcNk(wZz^EVwz= zHW0+$yutprE{I;6dw~%|*XJ97)om{H1S$Vl=mMf#io8J7grZOo^&CRk6}y3WZN>3m M!QucAWm)0~0CCznrvLx| delta 140 zcmezMg7Mc2MxFp~W)=|!4h{|m<>eE3>Y0?6Z|ps738XehSsh~n(vzdCv?j|J3vQ0J z4FvHwZ?ONZ3!>NNUSI^#_4!6%b(;%4LCXIXx_~H`A} dependencyTreeOperation().fromProject(this)); - } + dependencyTreeOperation().executeOnce(() -> dependencyTreeOperation().fromProject(this)); } /** @@ -501,12 +496,7 @@ public class BaseProject extends BuildExecutor { @BuildCommand(help = DownloadHelp.class) public void download() throws Exception { - if (isOffline()) { - System.out.println("Offline mode: download is disabled"); - } - else { - downloadOperation().executeOnce(() -> downloadOperation().fromProject(this)); - } + downloadOperation().executeOnce(() -> downloadOperation().fromProject(this)); } /** @@ -517,12 +507,7 @@ public class BaseProject extends BuildExecutor { @BuildCommand(help = PurgeHelp.class) public void purge() throws Exception { - if (isOffline()) { - System.out.println("Offline mode: purge is disabled"); - } - else { - purgeOperation().executeOnce(() -> purgeOperation().fromProject(this)); - } + purgeOperation().executeOnce(() -> purgeOperation().fromProject(this)); } /** @@ -1689,7 +1674,7 @@ public class BaseProject extends BuildExecutor { @Override public int execute(String[] arguments) { - if (!isOffline() && + if (!offline() && autoDownloadPurge()) { performAutoDownloadPurge(); } diff --git a/src/main/java/rife/bld/BuildExecutor.java b/src/main/java/rife/bld/BuildExecutor.java index 9e402b5..5f7c70d 100644 --- a/src/main/java/rife/bld/BuildExecutor.java +++ b/src/main/java/rife/bld/BuildExecutor.java @@ -9,12 +9,9 @@ import rife.bld.help.HelpHelp; import rife.bld.operations.HelpOperation; import rife.bld.operations.exceptions.ExitStatusException; import rife.ioc.HierarchicalProperties; -import rife.template.Template; -import rife.template.TemplateFactory; import rife.tools.ExceptionUtils; import java.io.*; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.logging.Logger; @@ -134,7 +131,7 @@ public class BuildExecutor { * or {@code false} otherwise * @since 2.0 */ - public boolean isOffline() { + public boolean offline() { return offline_; } diff --git a/src/main/java/rife/bld/Project.java b/src/main/java/rife/bld/Project.java index f664a38..5fdd0e7 100644 --- a/src/main/java/rife/bld/Project.java +++ b/src/main/java/rife/bld/Project.java @@ -191,12 +191,7 @@ public class Project extends BaseProject { jar(); jarSources(); jarJavadoc(); - if (isOffline()) { - System.out.println("Offline mode: publish is disabled"); - } - else { - publishOperation().executeOnce(() -> publishOperation().fromProject(this)); - } + publishOperation().executeOnce(() -> publishOperation().fromProject(this)); } /** diff --git a/src/main/java/rife/bld/operations/DependencyTreeOperation.java b/src/main/java/rife/bld/operations/DependencyTreeOperation.java index b3deb28..00c961d 100644 --- a/src/main/java/rife/bld/operations/DependencyTreeOperation.java +++ b/src/main/java/rife/bld/operations/DependencyTreeOperation.java @@ -24,6 +24,7 @@ import static rife.bld.dependencies.Scope.*; * @since 1.5.21 */ public class DependencyTreeOperation extends AbstractOperation { + private boolean offline_ = false; private HierarchicalProperties properties_ = null; private HierarchicalProperties extensionProperties_ = null; private ArtifactRetriever retriever_ = null; @@ -40,6 +41,11 @@ public class DependencyTreeOperation extends AbstractOperation { + private boolean offline_ = false; private HierarchicalProperties properties_ = null; private ArtifactRetriever retriever_ = null; private final List repositories_ = new ArrayList<>(); @@ -43,6 +44,11 @@ public class DownloadOperation extends AbstractOperation { * @since 1.5 */ public void execute() { + if (offline_) { + System.out.println("Offline mode: download is disabled"); + return; + } + executeDownloadCompileDependencies(); executeDownloadProvidedDependencies(); executeDownloadRuntimeDependencies(); @@ -133,7 +139,8 @@ public class DownloadOperation extends AbstractOperation { * @since 1.5 */ public DownloadOperation fromProject(BaseProject project) { - return properties(project.properties()) + return offline(project.offline()) + .properties(project.properties()) .artifactRetriever(project.artifactRetriever()) .repositories(project.repositories()) .dependencies(project.dependencies()) @@ -146,6 +153,30 @@ public class DownloadOperation extends AbstractOperation { .downloadJavadoc(project.downloadJavadoc()); } + /** + * Indicates whether the operation has to run offline. + * + * @param flag {@code true} if the operation runs offline; or + * {@code false} otherwise + * @return this operation instance + * @since 2.0 + */ + public DownloadOperation offline(boolean flag) { + offline_ = flag; + return this; + } + + /** + * Returns whether the operation has to run offline. + * + * @return {@code true} if the operation runs offline; or + * {@code false} otherwise + * @since 2.0 + */ + public boolean offline() { + return offline_; + } + /** * Provides repositories to resolve the dependencies against. * diff --git a/src/main/java/rife/bld/operations/PublishOperation.java b/src/main/java/rife/bld/operations/PublishOperation.java index 8b39df3..5adb61c 100644 --- a/src/main/java/rife/bld/operations/PublishOperation.java +++ b/src/main/java/rife/bld/operations/PublishOperation.java @@ -39,6 +39,7 @@ import static rife.tools.StringUtils.encodeHexLower; * @since 1.5.7 */ public class PublishOperation extends AbstractOperation { + private boolean offline_ = false; private HierarchicalProperties properties_ = null; private ArtifactRetriever retriever_ = null; private final HttpClient client_ = HttpClient.newHttpClient(); @@ -56,6 +57,11 @@ public class PublishOperation extends AbstractOperation { * @since 1.5.7 */ public void execute() { + if (offline_) { + System.out.println("Offline mode: publish is disabled"); + return; + } + if (repositories().isEmpty()) { throw new OperationOptionException("ERROR: the publication repositories should be specified"); } @@ -506,6 +512,7 @@ public class PublishOperation extends AbstractOperation { .mavenCompilerSource(project.javaRelease()) .mavenCompilerTarget(project.javaRelease()); } + offline(project.offline()); properties(project.properties()); artifactRetriever(project.artifactRetriever()); dependencies().include(project.dependencies()); @@ -528,6 +535,30 @@ public class PublishOperation extends AbstractOperation { return this; } + /** + * Indicates whether the operation has to run offline. + * + * @param flag {@code true} if the operation runs offline; or + * {@code false} otherwise + * @return this operation instance + * @since 2.0 + */ + public PublishOperation offline(boolean flag) { + offline_ = flag; + return this; + } + + /** + * Returns whether the operation has to run offline. + * + * @return {@code true} if the operation runs offline; or + * {@code false} otherwise + * @since 2.0 + */ + public boolean offline() { + return offline_; + } + /** * Provides the moment of publication. *

diff --git a/src/main/java/rife/bld/operations/PurgeOperation.java b/src/main/java/rife/bld/operations/PurgeOperation.java index ae9589c..267a121 100644 --- a/src/main/java/rife/bld/operations/PurgeOperation.java +++ b/src/main/java/rife/bld/operations/PurgeOperation.java @@ -25,6 +25,7 @@ import static rife.bld.dependencies.Dependency.CLASSIFIER_SOURCES; * @since 1.5 */ public class PurgeOperation extends AbstractOperation { + private boolean offline_ = false; private HierarchicalProperties properties_ = null; private ArtifactRetriever retriever_ = null; private final List repositories_ = new ArrayList<>(); @@ -43,6 +44,11 @@ public class PurgeOperation extends AbstractOperation { * @since 1.5 */ public void execute() { + if (offline_) { + System.out.println("Offline mode: purge is disabled"); + return; + } + executePurgeCompileDependencies(); executePurgeProvidedDependencies(); executePurgeRuntimeDependencies(); @@ -147,7 +153,8 @@ public class PurgeOperation extends AbstractOperation { * @since 1.5 */ public PurgeOperation fromProject(BaseProject project) { - return properties(project.properties()) + return offline(project.offline()) + .properties(project.properties()) .artifactRetriever(project.artifactRetriever()) .repositories(project.repositories()) .dependencies(project.dependencies()) @@ -160,6 +167,30 @@ public class PurgeOperation extends AbstractOperation { .preserveJavadoc(project.downloadJavadoc()); } + /** + * Indicates whether the operation has to run offline. + * + * @param flag {@code true} if the operation runs offline; or + * {@code false} otherwise + * @return this operation instance + * @since 2.0 + */ + public PurgeOperation offline(boolean flag) { + offline_ = flag; + return this; + } + + /** + * Returns whether the operation has to run offline. + * + * @return {@code true} if the operation runs offline; or + * {@code false} otherwise + * @since 2.0 + */ + public boolean offline() { + return offline_; + } + /** * Indicates whether the sources classifier files should be preserved. * diff --git a/src/test/java/rife/bld/operations/TestDependencyTreeOperation.java b/src/test/java/rife/bld/operations/TestDependencyTreeOperation.java index 35327da..42b575c 100644 --- a/src/test/java/rife/bld/operations/TestDependencyTreeOperation.java +++ b/src/test/java/rife/bld/operations/TestDependencyTreeOperation.java @@ -22,6 +22,7 @@ public class TestDependencyTreeOperation { @Test void testInstantiation() { var operation = new DependencyTreeOperation(); + assertFalse(operation.offline()); assertEquals(operation.properties().size(), 0); assertTrue(operation.dependencies().isEmpty()); assertTrue(operation.repositories().isEmpty()); @@ -55,7 +56,9 @@ public class TestDependencyTreeOperation { assertTrue(operation2.dependencies().scope(Scope.compile).contains(dependency2)); var operation3 = new DependencyTreeOperation() + .offline(true) .repositories(repository1, repository2); + assertTrue(operation3.offline()); assertTrue(operation3.repositories().contains(repository1)); assertTrue(operation3.repositories().contains(repository2)); } diff --git a/src/test/java/rife/bld/operations/TestDownloadOperation.java b/src/test/java/rife/bld/operations/TestDownloadOperation.java index eda94fb..e44d947 100644 --- a/src/test/java/rife/bld/operations/TestDownloadOperation.java +++ b/src/test/java/rife/bld/operations/TestDownloadOperation.java @@ -19,6 +19,7 @@ public class TestDownloadOperation { @Test void testInstantiation() { var operation = new DownloadOperation(); + assertFalse(operation.offline()); assertTrue(operation.dependencies().isEmpty()); assertTrue(operation.repositories().isEmpty()); assertNull(operation.libCompileDirectory()); @@ -81,7 +82,9 @@ public class TestDownloadOperation { assertEquals(dir5, operation2.libTestDirectory()); var operation3 = new DownloadOperation() + .offline(true) .repositories(repository1, repository2); + assertTrue(operation3.offline()); assertTrue(operation3.repositories().contains(repository1)); assertTrue(operation3.repositories().contains(repository2)); } diff --git a/src/test/java/rife/bld/operations/TestPublishOperation.java b/src/test/java/rife/bld/operations/TestPublishOperation.java index 55def0d..62819ce 100644 --- a/src/test/java/rife/bld/operations/TestPublishOperation.java +++ b/src/test/java/rife/bld/operations/TestPublishOperation.java @@ -60,6 +60,7 @@ public class TestPublishOperation { @Test void testInstantiation() { var operation = new PublishOperation(); + assertFalse(operation.offline()); assertTrue(operation.repositories().isEmpty()); assertNull(operation.moment()); assertTrue(operation.dependencies().isEmpty()); @@ -109,10 +110,12 @@ public class TestPublishOperation { assertTrue(operation2.artifacts().contains(artifact2)); var operation3 = new PublishOperation() + .offline(true) .repository(repository1) .repository(repository2) .moment(moment) .artifacts(List.of(artifact1, artifact2)); + assertTrue(operation3.offline()); operation3.publishProperties().mavenCompilerSource(17).mavenCompilerTarget(19); assertTrue(operation3.repositories().contains(repository1)); assertTrue(operation3.repositories().contains(repository2)); diff --git a/src/test/java/rife/bld/operations/TestPurgeOperation.java b/src/test/java/rife/bld/operations/TestPurgeOperation.java index aeff1b7..d9f7917 100644 --- a/src/test/java/rife/bld/operations/TestPurgeOperation.java +++ b/src/test/java/rife/bld/operations/TestPurgeOperation.java @@ -19,6 +19,7 @@ public class TestPurgeOperation { @Test void testInstantiation() { var operation = new PurgeOperation(); + assertFalse(operation.offline()); assertTrue(operation.dependencies().isEmpty()); assertTrue(operation.repositories().isEmpty()); assertNull(operation.libCompileDirectory()); @@ -81,7 +82,9 @@ public class TestPurgeOperation { assertEquals(dir5, operation2.libTestDirectory()); var operation3 = new PurgeOperation() + .offline(true) .repositories(repository1, repository2); + assertTrue(operation3.offline()); assertTrue(operation3.repositories().contains(repository1)); assertTrue(operation3.repositories().contains(repository2)); }