From cc7f4cb116eea6e9e5b8e9e0a7443cc6ac0397c2 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 27 Aug 2024 23:18:53 -0700 Subject: [PATCH 01/34] Bumped JUnit to version 5.11.0 --- examples/src/bld/java/com/example/ExampleBuild.java | 4 ++-- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index f6a2f09..538f6ed 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -39,8 +39,8 @@ public class ExampleBuild extends Project { .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 3))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 3))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))); // Include the Kotlin source directory when creating or publishing sources Java Archives jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 8923f78..3438f3b 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -51,8 +51,8 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("com.uwyn.rife2", "bld", version(2, 0, 1))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 3))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 3))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))) .include(dependency("org.assertj", "assertj-core", version(3, 26, 3))); javadocOperation() From fdee1781b524f9ff379ab3a457df84b9ab20b52e Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 27 Aug 2024 23:19:36 -0700 Subject: [PATCH 02/34] Bumped Kotlin to version 2.0.20 --- examples/src/bld/java/com/example/ExampleBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index 538f6ed..1e6c71b 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -34,7 +34,7 @@ public class ExampleBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); - final var kotlin = version(2, 0, 0); + final var kotlin = version(2, 0, 20); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) From 61d41e2fbe8f9591c23423762d73f6b81b1a9fd0 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 27 Aug 2024 23:20:08 -0700 Subject: [PATCH 03/34] Cleaned up API to match bld operations and options APIs --- .idea/bld.xml | 6 + .idea/runConfigurations/Run Tests.xml | 9 - examples/lib/bld/bld-wrapper.properties | 4 +- .../bld/extension/DokkaOperationBuild.java | 2 +- .../rife/bld/extension/DokkaOperation.java | 152 ++++++++++- .../rife/bld/extension/dokka/SourceSet.java | 251 ++++++++++++++++-- .../bld/extension/DokkaOperationTest.java | 91 +++++++ .../bld/extension/dokka/SourceSetTest.java | 163 ++++++++++++ 8 files changed, 634 insertions(+), 44 deletions(-) create mode 100644 .idea/bld.xml delete mode 100644 .idea/runConfigurations/Run Tests.xml diff --git a/.idea/bld.xml b/.idea/bld.xml new file mode 100644 index 0000000..6600cee --- /dev/null +++ b/.idea/bld.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/Run Tests.xml b/.idea/runConfigurations/Run Tests.xml deleted file mode 100644 index 057a90e..0000000 --- a/.idea/runConfigurations/Run Tests.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 7719b26..9834218 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -1,8 +1,8 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.0 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.0 +bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1-SNAPSHOT +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.0.1 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 3438f3b..97d313c 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -33,7 +33,7 @@ public class DokkaOperationBuild extends Project { public DokkaOperationBuild() { pkg = "rife.bld.extension"; name = "bld-dokka"; - version = version(1, 0, 0); + version = version(1, 0, 1, "SNAPSHOT"); javaRelease = 17; diff --git a/src/main/java/rife/bld/extension/DokkaOperation.java b/src/main/java/rife/bld/extension/DokkaOperation.java index 03f9323..c3e71c0 100644 --- a/src/main/java/rife/bld/extension/DokkaOperation.java +++ b/src/main/java/rife/bld/extension/DokkaOperation.java @@ -26,7 +26,11 @@ import rife.tools.StringUtils; import java.io.File; import java.io.IOException; -import java.util.*; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.logging.Logger; @@ -446,8 +450,7 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation includes(File... files) { - includes_.addAll(List.of(files)); - return this; + return includes(List.of(files)); } /** @@ -461,10 +464,24 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation includes(String... files) { - includes_.addAll(Arrays.stream(files).map(File::new).toList()); - return this; + return includesStrings(List.of(files)); } + /** + * Sets the Markdown files that contain module and package documentation. + *

+ * The contents of specified files are parsed and embedded into documentation as module and package descriptions. + *

+ * This can be configured on per-package basis. + * + * @param files one or more files + * @return this operation instance + */ + public DokkaOperation includes(Path... files) { + return includesPaths(List.of(files)); + } + + /** * Retrieves the markdown files that contain the module and package documentation. * @@ -489,6 +506,36 @@ public class DokkaOperation extends AbstractProcessOperation { return this; } + /** + * Sets the Markdown files that contain module and package documentation. + *

+ * The contents of specified files are parsed and embedded into documentation as module and package descriptions. + *

+ * This can be configured on per-package basis. + * + * @param files the markdown files + * @return this operation instance + */ + public DokkaOperation includesPaths(Collection files) { + includes_.addAll(files.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Sets the Markdown files that contain module and package documentation. + *

+ * The contents of specified files are parsed and embedded into documentation as module and package descriptions. + *

+ * This can be configured on per-package basis. + * + * @param files the markdown files + * @return this operation instance + */ + public DokkaOperation includesStrings(Collection files) { + includes_.addAll(files.stream().map(File::new).toList()); + return this; + } + /** * JSON configuration file path. * @@ -499,6 +546,33 @@ public class DokkaOperation extends AbstractProcessOperation { return this; } + /** + * JSON configuration file path. + * + * @param configuration the configuration file path + */ + public DokkaOperation json(Path configuration) { + return json(configuration.toFile()); + } + + /** + * Retrieves the JSON configuration file path. + * + * @return the configuration file path + */ + public File json() { + return json_; + } + + /** + * JSON configuration file path. + * + * @param configuration the configuration file path + */ + public DokkaOperation json(String configuration) { + return json(new File(configuration)); + } + /** * Sets the logging level. * @@ -589,6 +663,15 @@ public class DokkaOperation extends AbstractProcessOperation { return this; } + /** + * Retrieves the output directory path. + * + * @return the output directory + */ + public File outputDir() { + return outputDir_; + } + /** * Sets the output directory path, {@code ./dokka} by default. *

@@ -598,8 +681,19 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation outputDir(String outputDir) { - outputDir_ = new File(outputDir); - return this; + return outputDir(new File(outputDir)); + } + + /** + * Sets the output directory path, {@code ./dokka} by default. + *

+ * The directory to where documentation is generated, regardless of output format. + * + * @param outputDir the output directory + * @return this operation instance + */ + public DokkaOperation outputDir(Path outputDir) { + return outputDir(outputDir.toFile()); } /** @@ -641,12 +735,12 @@ public class DokkaOperation extends AbstractProcessOperation { /** * Sets the configuration for Dokka plugins. * - * @param pluginConfiguratione the map of configurations + * @param pluginConfigurations the map of configurations * @return this operation instance * @see #pluginConfigurations(String, String) */ - public DokkaOperation pluginConfigurations(Map pluginConfiguratione) { - pluginsConfiguration_.putAll(pluginConfiguratione); + public DokkaOperation pluginConfigurations(Map pluginConfigurations) { + pluginsConfiguration_.putAll(pluginConfigurations); return this; } @@ -666,8 +760,7 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation pluginsClasspath(File... jars) { - pluginsClasspath_.addAll(List.of(jars)); - return this; + return pluginsClasspath(List.of(jars)); } /** @@ -677,8 +770,17 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation pluginsClasspath(String... jars) { - pluginsClasspath_.addAll(Arrays.stream(jars).map(File::new).toList()); - return this; + return pluginsClasspathStrings(List.of(jars)); + } + + /** + * Sets the jars for Dokka plugins and their dependencies. + * + * @param jars one or more jars + * @return this operation instance + */ + public DokkaOperation pluginsClasspath(Path... jars) { + return pluginsClasspathPaths(List.of(jars)); } /** @@ -701,6 +803,28 @@ public class DokkaOperation extends AbstractProcessOperation { return this; } + /** + * Sets the jars for Dokka plugins and their dependencies. + * + * @param jars the jars + * @return this operation instance + */ + public DokkaOperation pluginsClasspathPaths(Collection jars) { + pluginsClasspath_.addAll(jars.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Sets the jars for Dokka plugins and their dependencies. + * + * @param jars the jars + * @return this operation instance + */ + public DokkaOperation pluginsClasspathStrings(Collection jars) { + pluginsClasspath_.addAll(jars.stream().map(File::new).toList()); + return this; + } + /** * Sets the configurations for a source set. *

diff --git a/src/main/java/rife/bld/extension/dokka/SourceSet.java b/src/main/java/rife/bld/extension/dokka/SourceSet.java index 2b5f24a..78a7074 100644 --- a/src/main/java/rife/bld/extension/dokka/SourceSet.java +++ b/src/main/java/rife/bld/extension/dokka/SourceSet.java @@ -19,7 +19,11 @@ package rife.bld.extension.dokka; import rife.bld.extension.DokkaOperation; import java.io.File; -import java.util.*; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -238,8 +242,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet classpath(File... files) { - classpath_.addAll(List.of(files)); - return this; + return classpath(List.of(files)); } /** @@ -253,8 +256,21 @@ public class SourceSet { * @return this operation instance */ public SourceSet classpath(String... files) { - classpath_.addAll(Arrays.stream(files).map(File::new).toList()); - return this; + return classpathStrings(List.of(files)); + } + + /** + * Sets classpath for analysis and interactive samples. + *

+ * This is useful if some types that come from dependencies are not resolved/picked up automatically. + *

+ * This option accepts both {@code .jar} and {@code .klib} files. + * + * @param files one or more file + * @return this operation instance + */ + public SourceSet classpath(Path... files) { + return classpathPaths(List.of(files)); } /** @@ -281,6 +297,36 @@ public class SourceSet { return classpath_; } + /** + * Sets classpath for analysis and interactive samples. + *

+ * This is useful if some types that come from dependencies are not resolved/picked up automatically. + *

+ * This option accepts both {@code .jar} and {@code .klib} files. + * + * @param files the collection of files + * @return this operation instance + */ + public SourceSet classpathPaths(Collection files) { + classpath_.addAll(files.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Sets classpath for analysis and interactive samples. + *

+ * This is useful if some types that come from dependencies are not resolved/picked up automatically. + *

+ * This option accepts both {@code .jar} and {@code .klib} files. + * + * @param files the collection of files + * @return this operation instance + */ + public SourceSet classpathStrings(Collection files) { + classpath_.addAll(files.stream().map(File::new).toList()); + return this; + } + /** * Sets the names of dependent source sets. * @@ -420,10 +466,25 @@ public class SourceSet { * @return this operation instance */ public SourceSet includes(String... files) { - includes_.addAll(Arrays.stream(files).map(File::new).toList()); - return this; + return includesStrings(List.of(files)); } + /** + * Sets the Markdown files that contain module and package documentation. + *

+ * The Markdown files that contain module and package documentation. + *

+ * The contents of the specified files are parsed and embedded into documentation as module and package + * descriptions. + * + * @param files one or more files + * @return this operation instance + */ + public SourceSet includes(Path... files) { + return includesPaths(List.of(files)); + } + + /** * Retrieves the Markdown files that contain module and package documentation. * @@ -449,6 +510,38 @@ public class SourceSet { return this; } + /** + * Sets the Markdown files that contain module and package documentation. + *

+ * The Markdown files that contain module and package documentation. + *

+ * The contents of the specified files are parsed and embedded into documentation as module and package + * descriptions. + * + * @param files the collection of files + * @return this operation instance + */ + public SourceSet includesPaths(Collection files) { + includes_.addAll(files.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Sets the Markdown files that contain module and package documentation. + *

+ * The Markdown files that contain module and package documentation. + *

+ * The contents of the specified files are parsed and embedded into documentation as module and package + * descriptions. + * + * @param files the collection of files + * @return this operation instance + */ + public SourceSet includesStrings(Collection files) { + includes_.addAll(files.stream().map(File::new).toList()); + return this; + } + /** * Sets the version of JDK to use for linking to JDK Javadocs. *

@@ -465,6 +558,15 @@ public class SourceSet { return this; } + /** + * Retrieves the version of the JDK to use for linking to JDK Javadocs. + * + * @return the JDK version. + */ + public String jdkVersion() { + return jdkVersion_; + } + /** * Sets the version of JDK to use for linking to JDK Javadocs. *

@@ -657,8 +759,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet samples(File... samples) { - samples_.addAll(List.of(samples)); - return this; + return samples(List.of(samples)); } /** @@ -671,7 +772,47 @@ public class SourceSet { * @return this operation instance */ public SourceSet samples(String... samples) { - samples_.addAll(Arrays.stream(samples).map(File::new).toList()); + return samplesStrings(List.of(samples)); + } + + /** + * Set the directories or files that contain sample functions. + *

+ * The directories or files that contain sample functions which are referenced via the {@code @sample} KDoc + * tag. + * + * @param samples nne or more samples + * @return this operation instance + */ + public SourceSet samples(Path... samples) { + return samplesPaths(List.of(samples)); + } + + /** + * Set the directories or files that contain sample functions. + *

+ * The directories or files that contain sample functions which are referenced via the {@code @sample} KDoc + * tag. + * + * @param samples the samples + * @return this operation instance + */ + public SourceSet samplesPaths(Collection samples) { + samples_.addAll(samples.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Set the directories or files that contain sample functions. + *

+ * The directories or files that contain sample functions which are referenced via the {@code @sample} KDoc + * tag. + * + * @param samples the samples + * @return this operation instance + */ + public SourceSet samplesStrings(Collection samples) { + samples_.addAll(samples.stream().map(File::new).toList()); return this; } @@ -725,8 +866,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet src(File... src) { - src_.addAll(List.of(src)); - return this; + return src(List.of(src)); } /** @@ -739,8 +879,20 @@ public class SourceSet { * @return this operation instance */ public SourceSet src(String... src) { - src_.addAll(Arrays.stream(src).map(File::new).toList()); - return this; + return srcStrings(List.of(src)); + } + + /** + * Sets the source code roots to be analyzed and documented. + *

+ * The source code roots to be analyzed and documented. Acceptable inputs are directories and individual + * {@code .kt} / {@code .java} files. + * + * @param src pne ore moe source code roots + * @return this operation instance + */ + public SourceSet src(Path... src) { + return srcPaths(List.of(src)); } /** @@ -787,6 +939,34 @@ public class SourceSet { return srcLinks_; } + /** + * Sets the source code roots to be analyzed and documented. + *

+ * The source code roots to be analyzed and documented. Acceptable inputs are directories and individual + * {@code .kt} / {@code .java} files. + * + * @param src the source code roots + * @return this operation instance + */ + public SourceSet srcPaths(Collection src) { + src_.addAll(src.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Sets the source code roots to be analyzed and documented. + *

+ * The source code roots to be analyzed and documented. Acceptable inputs are directories and individual + * {@code .kt} / {@code .java} files. + * + * @param src the source code roots + * @return this operation instance + */ + public SourceSet srcStrings(Collection src) { + src_.addAll(src.stream().map(File::new).toList()); + return this; + } + /** * Sets the paths to files to be suppressed. *

@@ -800,7 +980,6 @@ public class SourceSet { return this; } - /** * Retrieves the paths to files to be suppressed. * @@ -819,8 +998,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet suppressedFiles(String... suppressedFiles) { - suppressedFiles_.addAll(Arrays.stream(suppressedFiles).map(File::new).toList()); - return this; + return suppressedFilesStrings(List.of(suppressedFiles)); } /** @@ -832,7 +1010,44 @@ public class SourceSet { * @return this operation instance */ public SourceSet suppressedFiles(File... suppressedFiles) { - suppressedFiles_.addAll(List.of(suppressedFiles)); + return suppressedFiles(List.of(suppressedFiles)); + } + + /** + * Sets the paths to files to be suppressed. + *

+ * The files to be suppressed when generating documentation. + * + * @param suppressedFiles one or moe suppressed files + * @return this operation instance + */ + public SourceSet suppressedFiles(Path... suppressedFiles) { + return suppressedFilesPaths(List.of(suppressedFiles)); + } + + /** + * Sets the paths to files to be suppressed. + *

+ * The files to be suppressed when generating documentation. + * + * @param suppressedFiles the suppressed files + * @return this operation instance + */ + public SourceSet suppressedFilesPaths(Collection suppressedFiles) { + suppressedFiles_.addAll(suppressedFiles.stream().map(Path::toFile).toList()); + return this; + } + + /** + * Sets the paths to files to be suppressed. + *

+ * The files to be suppressed when generating documentation. + * + * @param suppressedFiles the suppressed files + * @return this operation instance + */ + public SourceSet suppressedFilesStrings(Collection suppressedFiles) { + suppressedFiles_.addAll(suppressedFiles.stream().map(File::new).toList()); return this; } } diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index 11c2bca..398fd22 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -27,6 +27,7 @@ import rife.bld.operations.exceptions.ExitStatusException; import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.List; @@ -181,4 +182,94 @@ class DokkaOperationTest { .outputFormat(OutputFormat.JAVADOC); assertThatCode(op::execute).doesNotThrowAnyException(); } + + @Test + void includesTest() { + var op = new DokkaOperation(); + + op.includes(List.of(new File(FILE_1), new File(FILE_2))); + assertThat(op.includes()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2)); + op.includes().clear(); + + op.includes(new File(FILE_1), new File(FILE_2)); + assertThat(op.includes()).as("File...").containsExactly(new File(FILE_1), new File(FILE_2)); + op.includes().clear(); + + op.includes(FILE_1, FILE_2); + assertThat(op.includes()).as("String...") + .containsExactly(new File(FILE_1), new File(FILE_2)); + op.includes().clear(); + + op = op.includes(Path.of(FILE_1), Path.of(FILE_2)); + assertThat(op.includes()).as("Path...") + .containsExactly(new File(FILE_1), new File(FILE_2)); + op.includes().clear(); + + op.includesPaths(List.of(new File(FILE_1).toPath(), new File(FILE_2).toPath())); + assertThat(op.includes()).as("List(Path...)").containsExactly(new File(FILE_1), new File(FILE_2)); + op.includes().clear(); + + op.includesStrings(List.of(FILE_1, FILE_2)); + assertThat(op.includes()).as("List(String...)").containsExactly(new File(FILE_1), new File(FILE_2)); + op.includes().clear(); + } + + @Test + void jsonTest() { + var file1 = new File(FILE_1); + var op = new DokkaOperation().json(file1); + assertThat(op.json()).isEqualTo(file1); + + var file2 = Path.of(FILE_2); + op = op.json(file2); + assertThat(op.json()).isEqualTo(file2.toFile()); + + op = op.json(FILE_3); + assertThat(op.json()).isEqualTo(new File(FILE_3)); + } + + @Test + void outputDirTest() { + var javadoc = "build/javadoc"; + var op = new DokkaOperation().outputDir(javadoc); + assertThat(op.outputDir()).isEqualTo(new File(javadoc)); + + var build = "build"; + op = op.outputDir(Path.of(build)); + assertThat(op.outputDir()).isEqualTo(new File(build)); + + op = op.outputDir(new File(javadoc)); + assertThat(op.outputDir()).isEqualTo(new File(javadoc)); + } + + @Test + void pluginClasspathTest() { + var op = new DokkaOperation(); + + op.pluginsClasspath(List.of(new File(FILE_1), new File(FILE_2))); + assertThat(op.pluginsClasspath()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2)); + op.pluginsClasspath().clear(); + + op.pluginsClasspath(new File(FILE_1), new File(FILE_2)); + assertThat(op.pluginsClasspath()).as("File...").containsExactly(new File(FILE_1), new File(FILE_2)); + op.pluginsClasspath().clear(); + + op.pluginsClasspath(FILE_1, FILE_2); + assertThat(op.pluginsClasspath()).as("String...") + .containsExactly(new File(FILE_1), new File(FILE_2)); + op.pluginsClasspath().clear(); + + op = op.pluginsClasspath(Path.of(FILE_1), Path.of(FILE_2)); + assertThat(op.pluginsClasspath()).as("Path...") + .containsExactly(new File(FILE_1), new File(FILE_2)); + op.pluginsClasspath().clear(); + + op.pluginsClasspathPaths(List.of(new File(FILE_1).toPath(), new File(FILE_2).toPath())); + assertThat(op.pluginsClasspath()).as("List(Path...)").containsExactly(new File(FILE_1), new File(FILE_2)); + op.pluginsClasspath().clear(); + + op.pluginsClasspathStrings(List.of(FILE_1, FILE_2)); + assertThat(op.pluginsClasspath()).as("List(String...)").containsExactly(new File(FILE_1), new File(FILE_2)); + op.pluginsClasspath().clear(); + } } diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index 95453c4..031a818 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -21,6 +21,7 @@ import org.junit.jupiter.api.Test; import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.Map; @@ -29,6 +30,7 @@ import java.util.stream.IntStream; import static org.assertj.core.api.Assertions.assertThat; import static rife.bld.extension.TestUtils.localPath; +@SuppressWarnings("PMD.AvoidDuplicateLiterals") class SourceSetTest { private static final String CLASSPATH_1 = "classpath1"; private static final String CLASSPATH_2 = "classpath2"; @@ -51,6 +53,104 @@ class SourceSetTest { private static final String SUP_2 = "sup2"; private static final String SUP_3 = "sup3"; + @Test + void classpathTest() { + var args = new SourceSet(); + + args.classpath(new File(CLASSPATH_1), new File(CLASSPATH_2)); + assertThat(args.classpath()).as("File...").containsExactly(new File(CLASSPATH_1), new File(CLASSPATH_2)); + args.classpath().clear(); + + args = args.classpath(Path.of(CLASSPATH_1), Path.of(CLASSPATH_2)); + assertThat(args.classpath()).as("Path...") + .containsExactly(new File(CLASSPATH_1), new File(CLASSPATH_2)); + args.classpath().clear(); + + args.classpath(CLASSPATH_1, CLASSPATH_2); + assertThat(args.classpath()).as("String...") + .containsExactly(new File(CLASSPATH_1), new File(CLASSPATH_2)); + args.classpath().clear(); + + args.classpath(List.of(new File(CLASSPATH_1), new File(CLASSPATH_2))); + assertThat(args.classpath()).as("File(List...)").containsExactly(new File(CLASSPATH_1), new File(CLASSPATH_2)); + args.classpath().clear(); + + args.classpathPaths(List.of(new File(CLASSPATH_1).toPath(), new File(CLASSPATH_2).toPath())); + assertThat(args.classpath()).as("List(Path...)").containsExactly(new File(CLASSPATH_1), new File(CLASSPATH_2)); + args.classpath().clear(); + + args.classpathStrings(List.of(CLASSPATH_1, CLASSPATH_2)); + assertThat(args.classpath()).as("List(String...)").containsExactly(new File(CLASSPATH_1), new File(CLASSPATH_2)); + args.classpath().clear(); + } + + @Test + void includesTest() { + var args = new SourceSet(); + + args.includes(new File(INCLUDES_1), new File(INCLUDES_2)); + assertThat(args.includes()).as("File...").containsExactly(new File(INCLUDES_1), new File(INCLUDES_2)); + args.includes().clear(); + + args = args.includes(Path.of(INCLUDES_1), Path.of(INCLUDES_2)); + assertThat(args.includes()).as("Path...").containsExactly(new File(INCLUDES_1), new File(INCLUDES_2)); + args.includes().clear(); + + args.includes(INCLUDES_1, INCLUDES_2); + assertThat(args.includes()).as("String...").containsExactly(new File(INCLUDES_1), new File(INCLUDES_2)); + args.includes().clear(); + + args.includes(List.of(new File(INCLUDES_1), new File(INCLUDES_2))); + assertThat(args.includes()).as("List(File...)").containsExactly(new File(INCLUDES_1), new File(INCLUDES_2)); + args.includes().clear(); + + args.includesPaths(List.of(new File(INCLUDES_1).toPath(), new File(INCLUDES_2).toPath())); + assertThat(args.includes()).as("List(Path...)").containsExactly(new File(INCLUDES_1), new File(INCLUDES_2)); + args.includes().clear(); + + args.includesStrings(List.of(INCLUDES_1, INCLUDES_2)); + assertThat(args.includes()).as("List(String...)").containsExactly(new File(INCLUDES_1), new File(INCLUDES_2)); + args.includes().clear(); + } + + @Test + void jdkVersionTest() { + var args = new SourceSet().jdkVersion("22"); + assertThat(args.jdkVersion()).isEqualTo("22"); + args = args.jdkVersion(19); + assertThat(args.jdkVersion()).isEqualTo("19"); + } + + @Test + void samplesTest() { + var args = new SourceSet(); + args.samples(new File(SAMPLES_1), new File(SAMPLES_2)); + assertThat(args.samples()).as("File...").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.samples().clear(); + + args = args.samples(Path.of(SAMPLES_1), Path.of(SAMPLES_2)); + assertThat(args.samples()).as("Path...") + .containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.samples().clear(); + + args.samples(SAMPLES_1, SAMPLES_2); + assertThat(args.samples()).as("String...") + .containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.samples().clear(); + + args.samples(List.of(new File(SAMPLES_1), new File(SAMPLES_2))); + assertThat(args.samples()).as("List(File...)").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.samples().clear(); + + args.samplesPaths(List.of(new File(SAMPLES_1).toPath(), new File(SAMPLES_2).toPath())); + assertThat(args.samples()).as("List(Path...)").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.samples().clear(); + + args.samplesStrings(List.of(SAMPLES_1, SAMPLES_2)); + assertThat(args.samples()).as("List(String...)").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.samples().clear(); + } + @Test void sourceSetCollectionsTest() { var args = new SourceSet() @@ -179,4 +279,67 @@ class SourceSetTest { IntStream.range(0, params.size()).forEach(i -> assertThat(params.get(i)).isEqualTo(matches.get(i))); } + + @Test + void srcTest() { + var src = "src"; + var main = "src/main"; + var test = "src/test"; + var srcFile = new File(src); + var mainFile = new File(main); + var testFile = new File(test); + + var args = new SourceSet().src(src, main); + assertThat(args.src()).as("String...").containsExactly(srcFile, mainFile); + args.src().clear(); + + args = new SourceSet().srcStrings(List.of(src, main)); + assertThat(args.src()).as("List(String...)").containsExactly(srcFile, mainFile); + args.src().clear(); + + args = args.src(srcFile.toPath(), mainFile.toPath()); + assertThat(args.src()).as("Path...").containsExactly(srcFile, mainFile); + args.src().clear(); + + args = args.srcPaths(List.of(srcFile.toPath(), testFile.toPath())); + assertThat(args.src()).as("List(Path...)").containsExactly(srcFile, testFile); + args.src().clear(); + + args = args.src(srcFile, mainFile); + assertThat(args.src()).as("File...").containsExactly(srcFile, mainFile); + args.src().clear(); + + args = args.src(List.of(srcFile, mainFile)); + assertThat(args.src()).as("List(File...)").containsExactly(srcFile, mainFile); + args.src().clear(); + } + + @Test + void suppressedFilesTest() { + var args = new SourceSet(); + + args.suppressedFiles(new File(SAMPLES_1), new File(SAMPLES_2)); + assertThat(args.suppressedFiles()).as("File...").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.suppressedFiles().clear(); + + args = args.suppressedFiles(Path.of(SAMPLES_1), Path.of(SAMPLES_2)); + assertThat(args.suppressedFiles()).as("Path...").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.suppressedFiles().clear(); + + args.suppressedFiles(SAMPLES_1, SAMPLES_2); + assertThat(args.suppressedFiles()).as("String...").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.suppressedFiles().clear(); + + args.suppressedFiles(List.of(new File(SAMPLES_1), new File(SAMPLES_2))); + assertThat(args.suppressedFiles()).as("List(File...)").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.suppressedFiles().clear(); + + args.suppressedFilesPaths(List.of(new File(SAMPLES_1).toPath(), new File(SAMPLES_2).toPath())); + assertThat(args.suppressedFiles()).as("List(Path...)").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.suppressedFiles().clear(); + + args.suppressedFilesStrings(List.of(SAMPLES_1, SAMPLES_2)); + assertThat(args.suppressedFiles()).as("List(String...)").containsExactly(new File(SAMPLES_1), new File(SAMPLES_2)); + args.suppressedFiles().clear(); + } } From b8e4cc9d913a377c537fec0ab4757ce2af7a3442 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 29 Aug 2024 21:56:18 -0700 Subject: [PATCH 04/34] Bumped bld to version 2.1.0 --- .idea/libraries/bld.xml | 4 +- .idea/libraries/compile.xml | 4 +- .idea/libraries/runtime.xml | 4 +- .idea/libraries/test.xml | 4 +- .vscode/settings.json | 2 +- README.md | 2 +- examples/.idea/libraries/bld.xml | 4 +- examples/.idea/libraries/compile.xml | 4 +- examples/.idea/libraries/runtime.xml | 4 +- examples/.idea/libraries/test.xml | 4 +- examples/.vscode/settings.json | 2 +- examples/lib/bld/bld-wrapper.jar | Bin 29577 -> 30440 bytes examples/lib/bld/bld-wrapper.properties | 2 +- lib/bld/bld-wrapper.jar | Bin 29577 -> 30440 bytes lib/bld/bld-wrapper.properties | 6 +- .../bld/extension/DokkaOperationBuild.java | 2 +- .../rife/bld/extension/dokka/SourceSet.java | 90 +++++++++++------- .../bld/extension/dokka/SourceSetTest.java | 7 +- 18 files changed, 87 insertions(+), 58 deletions(-) diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml index 9f8c820..1d0172b 100644 --- a/.idea/libraries/bld.xml +++ b/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/.idea/libraries/compile.xml b/.idea/libraries/compile.xml index 9bd86aa..99cc0c0 100644 --- a/.idea/libraries/compile.xml +++ b/.idea/libraries/compile.xml @@ -7,7 +7,7 @@ - - + + \ No newline at end of file diff --git a/.idea/libraries/runtime.xml b/.idea/libraries/runtime.xml index 2ae5c4b..d4069f2 100644 --- a/.idea/libraries/runtime.xml +++ b/.idea/libraries/runtime.xml @@ -8,7 +8,7 @@ - - + + \ No newline at end of file diff --git a/.idea/libraries/test.xml b/.idea/libraries/test.xml index b80486a..57ed5ef 100644 --- a/.idea/libraries/test.xml +++ b/.idea/libraries/test.xml @@ -8,7 +8,7 @@ - - + + \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 5b2667b..4c33beb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.0.1.jar", + "${HOME}/.bld/dist/bld-2.1.0.jar", "lib/**/*.jar" ] } diff --git a/README.md b/README.md index 420b4de..cb9d556 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) -[![bld](https://img.shields.io/badge/2.0.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) +[![bld](https://img.shields.io/badge/2.1.0-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![Release](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/releases/com/uwyn/rife2/bld-dokka/maven-metadata.xml?color=blue)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-dokka) [![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-dokka/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-dokka) [![GitHub CI](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml) diff --git a/examples/.idea/libraries/bld.xml b/examples/.idea/libraries/bld.xml index 4dd96bf..5c4010c 100644 --- a/examples/.idea/libraries/bld.xml +++ b/examples/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/examples/.idea/libraries/compile.xml b/examples/.idea/libraries/compile.xml index 9bd86aa..99cc0c0 100644 --- a/examples/.idea/libraries/compile.xml +++ b/examples/.idea/libraries/compile.xml @@ -7,7 +7,7 @@ - - + + \ No newline at end of file diff --git a/examples/.idea/libraries/runtime.xml b/examples/.idea/libraries/runtime.xml index 2ae5c4b..d4069f2 100644 --- a/examples/.idea/libraries/runtime.xml +++ b/examples/.idea/libraries/runtime.xml @@ -8,7 +8,7 @@ - - + + \ No newline at end of file diff --git a/examples/.idea/libraries/test.xml b/examples/.idea/libraries/test.xml index b80486a..57ed5ef 100644 --- a/examples/.idea/libraries/test.xml +++ b/examples/.idea/libraries/test.xml @@ -8,7 +8,7 @@ - - + + \ No newline at end of file diff --git a/examples/.vscode/settings.json b/examples/.vscode/settings.json index 5b2667b..4c33beb 100644 --- a/examples/.vscode/settings.json +++ b/examples/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.0.1.jar", + "${HOME}/.bld/dist/bld-2.1.0.jar", "lib/**/*.jar" ] } diff --git a/examples/lib/bld/bld-wrapper.jar b/examples/lib/bld/bld-wrapper.jar index f51a15451c65ed55ad1f790222f0136a3294e7c0..6a5e8d408ab79c691980633949ff88510efb6ae5 100644 GIT binary patch delta 15855 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 L{_CF_1myn#fA}YA diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 9834218..09caa18 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -5,4 +5,4 @@ bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1-SNAPSHOT bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.0.1 +bld.version=2.1.0 diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index f17986d1991ce9754dd423eb86ec28ca6414cee5..8c94be9f39c2bad4c699985663f9676dd56929e1 100644 GIT binary patch delta 15855 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 A9RL6T delta 15009 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

s$*rls@!sHBO;ZCZI;P{yKGwD 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 L_^*Fz5Rm@|Yh)(s diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 79b2f59..5d0bba4 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -1,8 +1,8 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.2 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.4 +bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.5 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.0.1 +bld.version=2.1.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 97d313c..ba769ed 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -49,7 +49,7 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "javadoc-plugin", dokka)) .include(dependency("org.jetbrains.dokka", "gfm-plugin", dokka)) .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) - .include(dependency("com.uwyn.rife2", "bld", version(2, 0, 1))); + .include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0))); scope(test) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))) diff --git a/src/main/java/rife/bld/extension/dokka/SourceSet.java b/src/main/java/rife/bld/extension/dokka/SourceSet.java index 78a7074..4062a1e 100644 --- a/src/main/java/rife/bld/extension/dokka/SourceSet.java +++ b/src/main/java/rife/bld/extension/dokka/SourceSet.java @@ -87,8 +87,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet apiVersion(int apiVersion) { - apiVersion_ = String.valueOf(apiVersion); - return this; + return apiVersion(String.valueOf(apiVersion)); } /** @@ -240,6 +239,7 @@ public class SourceSet { * * @param files one or more file * @return this operation instance + * @see #classpath(Collection) */ public SourceSet classpath(File... files) { return classpath(List.of(files)); @@ -254,6 +254,7 @@ public class SourceSet { * * @param files one or more file * @return this operation instance + * @see #classpathStrings(Collection) */ public SourceSet classpath(String... files) { return classpathStrings(List.of(files)); @@ -268,6 +269,7 @@ public class SourceSet { * * @param files one or more file * @return this operation instance + * @see #classpathPaths(Collection) */ public SourceSet classpath(Path... files) { return classpathPaths(List.of(files)); @@ -282,6 +284,7 @@ public class SourceSet { * * @param files the collection of files * @return this operation instance + * @see #classpath(File...) */ public SourceSet classpath(Collection files) { classpath_.addAll(files); @@ -306,10 +309,10 @@ public class SourceSet { * * @param files the collection of files * @return this operation instance + * @see #classpath(Path...) */ public SourceSet classpathPaths(Collection files) { - classpath_.addAll(files.stream().map(Path::toFile).toList()); - return this; + return classpath(files.stream().map(Path::toFile).toList()); } /** @@ -321,10 +324,10 @@ public class SourceSet { * * @param files the collection of files * @return this operation instance + * @see #classpath(String...) */ public SourceSet classpathStrings(Collection files) { - classpath_.addAll(files.stream().map(File::new).toList()); - return this; + return classpath(files.stream().map(File::new).toList()); } /** @@ -448,10 +451,10 @@ public class SourceSet { * * @param files one or more files * @return this operation instance + * @see #includes(Collection) */ public SourceSet includes(File... files) { - includes_.addAll(List.of(files)); - return this; + return includes(List.of(files)); } /** @@ -464,6 +467,7 @@ public class SourceSet { * * @param files one or more files * @return this operation instance + * @see #classpathStrings(Collection) */ public SourceSet includes(String... files) { return includesStrings(List.of(files)); @@ -479,6 +483,7 @@ public class SourceSet { * * @param files one or more files * @return this operation instance + * @see #classpathPaths(Collection) */ public SourceSet includes(Path... files) { return includesPaths(List.of(files)); @@ -504,6 +509,7 @@ public class SourceSet { * * @param files the collection of files * @return this operation instance + * @see #includes(File...) */ public SourceSet includes(Collection files) { includes_.addAll(files); @@ -520,10 +526,10 @@ public class SourceSet { * * @param files the collection of files * @return this operation instance + * @see #includes(Path...) */ public SourceSet includesPaths(Collection files) { - includes_.addAll(files.stream().map(Path::toFile).toList()); - return this; + return includes(files.stream().map(Path::toFile).toList()); } /** @@ -536,10 +542,10 @@ public class SourceSet { * * @param files the collection of files * @return this operation instance + * @see #classpath(String...) */ public SourceSet includesStrings(Collection files) { - includes_.addAll(files.stream().map(File::new).toList()); - return this; + return includes(files.stream().map(File::new).toList()); } /** @@ -579,8 +585,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet jdkVersion(int jdkVersion) { - jdkVersion_ = String.valueOf(jdkVersion); - return this; + return jdkVersion(String.valueOf(jdkVersion)); } /** @@ -601,8 +606,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet languageVersion(int languageVersion) { - languageVersion_ = String.valueOf(languageVersion); - return this; + return languageVersion(String.valueOf(languageVersion)); } /** @@ -704,8 +708,7 @@ public class SourceSet { * @return this operation instance */ public SourceSet perPackageOptions(String... perPackageOptions) { - perPackageOptions_.addAll(List.of(perPackageOptions)); - return this; + return perPackageOptions(List.of(perPackageOptions)); } /** @@ -734,6 +737,7 @@ public class SourceSet { * * @param samples the samples * @return this operation instance + * @see #samples(File...) */ public SourceSet samples(Collection samples) { samples_.addAll(samples); @@ -757,6 +761,7 @@ public class SourceSet { * * @param samples nne or more samples * @return this operation instance + * @see #samples(Collection) */ public SourceSet samples(File... samples) { return samples(List.of(samples)); @@ -770,6 +775,7 @@ public class SourceSet { * * @param samples nne or more samples * @return this operation instance + * @see #samplesStrings(Collection) */ public SourceSet samples(String... samples) { return samplesStrings(List.of(samples)); @@ -783,6 +789,7 @@ public class SourceSet { * * @param samples nne or more samples * @return this operation instance + * @see #samplesPaths(Collection) */ public SourceSet samples(Path... samples) { return samplesPaths(List.of(samples)); @@ -796,10 +803,10 @@ public class SourceSet { * * @param samples the samples * @return this operation instance + * @see #samples(Path...) */ public SourceSet samplesPaths(Collection samples) { - samples_.addAll(samples.stream().map(Path::toFile).toList()); - return this; + return samples(samples.stream().map(Path::toFile).toList()); } /** @@ -810,10 +817,10 @@ public class SourceSet { * * @param samples the samples * @return this operation instance + * @see #samples(String...) */ public SourceSet samplesStrings(Collection samples) { - samples_.addAll(samples.stream().map(File::new).toList()); - return this; + return samples(samples.stream().map(File::new).toList()); } /** @@ -850,6 +857,7 @@ public class SourceSet { * * @param src the source code roots * @return this operation instance + * @see #src(File...) */ public SourceSet src(Collection src) { src_.addAll(src); @@ -864,6 +872,7 @@ public class SourceSet { * * @param src pne ore moe source code roots * @return this operation instance + * @see #src(Collection) */ public SourceSet src(File... src) { return src(List.of(src)); @@ -877,6 +886,7 @@ public class SourceSet { * * @param src pne ore moe source code roots * @return this operation instance + * @see #srcStrings(Collection) */ public SourceSet src(String... src) { return srcStrings(List.of(src)); @@ -890,6 +900,7 @@ public class SourceSet { * * @param src pne ore moe source code roots * @return this operation instance + * @see #srcPaths(Collection) */ public SourceSet src(Path... src) { return srcPaths(List.of(src)); @@ -926,8 +937,19 @@ public class SourceSet { * @return this operation instance */ public SourceSet srcLink(File srcPath, String remotePath, String lineSuffix) { - srcLinks_.put(srcPath.getAbsolutePath(), remotePath + lineSuffix); - return this; + return srcLink(srcPath.getAbsolutePath(), remotePath, lineSuffix); + } + + /** + * Sets the mapping between a source directory and a Web service for browsing the code. + * + * @param srcPath the source path + * @param remotePath the remote path + * @param lineSuffix the line suffix + * @return this operation instance + */ + public SourceSet srcLink(Path srcPath, String remotePath, String lineSuffix) { + return srcLink(srcPath.toFile().getAbsolutePath(), remotePath, lineSuffix); } /** @@ -947,10 +969,10 @@ public class SourceSet { * * @param src the source code roots * @return this operation instance + * @see #src(Path...) */ public SourceSet srcPaths(Collection src) { - src_.addAll(src.stream().map(Path::toFile).toList()); - return this; + return src(src.stream().map(Path::toFile).toList()); } /** @@ -961,10 +983,10 @@ public class SourceSet { * * @param src the source code roots * @return this operation instance + * @see #src(String...) */ public SourceSet srcStrings(Collection src) { - src_.addAll(src.stream().map(File::new).toList()); - return this; + return src(src.stream().map(File::new).toList()); } /** @@ -974,6 +996,7 @@ public class SourceSet { * * @param suppressedFiles the suppressed files * @return this operation instance + * @see #suppressedFiles(File...) */ public SourceSet suppressedFiles(Collection suppressedFiles) { suppressedFiles_.addAll(suppressedFiles); @@ -996,6 +1019,7 @@ public class SourceSet { * * @param suppressedFiles one or moe suppressed files * @return this operation instance + * @see #suppressedFilesStrings(Collection) */ public SourceSet suppressedFiles(String... suppressedFiles) { return suppressedFilesStrings(List.of(suppressedFiles)); @@ -1008,6 +1032,7 @@ public class SourceSet { * * @param suppressedFiles one or moe suppressed files * @return this operation instance + * @see #suppressedFiles(Collection) */ public SourceSet suppressedFiles(File... suppressedFiles) { return suppressedFiles(List.of(suppressedFiles)); @@ -1020,6 +1045,7 @@ public class SourceSet { * * @param suppressedFiles one or moe suppressed files * @return this operation instance + * @see #suppressedFilesPaths(Collection) */ public SourceSet suppressedFiles(Path... suppressedFiles) { return suppressedFilesPaths(List.of(suppressedFiles)); @@ -1032,10 +1058,10 @@ public class SourceSet { * * @param suppressedFiles the suppressed files * @return this operation instance + * @see #suppressedFiles(Path...) */ public SourceSet suppressedFilesPaths(Collection suppressedFiles) { - suppressedFiles_.addAll(suppressedFiles.stream().map(Path::toFile).toList()); - return this; + return suppressedFiles(suppressedFiles.stream().map(Path::toFile).toList()); } /** @@ -1045,9 +1071,9 @@ public class SourceSet { * * @param suppressedFiles the suppressed files * @return this operation instance + * @see #suppressedFiles(String...) */ public SourceSet suppressedFilesStrings(Collection suppressedFiles) { - suppressedFiles_.addAll(suppressedFiles.stream().map(File::new).toList()); - return this; + return suppressedFiles(suppressedFiles.stream().map(File::new).toList()); } } diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index 031a818..0927bd8 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -42,6 +42,7 @@ class SourceSetTest { private static final String OPTION_2 = "option2"; private static final String PATH_1 = "path1"; private static final String PATH_2 = "path2"; + private static final String PATH_3 = "path3"; private static final String SAMPLES_1 = "samples1"; private static final String SAMPLES_2 = "samples2"; private static final String SAMPLES_3 = "samples3"; @@ -221,6 +222,7 @@ class SourceSetTest { .src(List.of(new File(SRC_4))) .srcLink(PATH_1, "remote1", "#suffix1") .srcLink(new File(PATH_2), "remote2", "#suffix2") + .srcLink(Path.of(PATH_3), "remote3", "#suffix3") .suppressedFiles(SUP_1, SUP_2); assertThat(sourceSet.classpath()).as("classpath").hasSize(2); @@ -231,7 +233,7 @@ class SourceSetTest { assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2); assertThat(sourceSet.samples()).as("samples").hasSize(2); assertThat(sourceSet.src()).as("src").hasSize(4); - assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(2); + assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3); assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2); var params = sourceSet.args(); @@ -266,7 +268,8 @@ class SourceSetTest { "-samples", localPath(SAMPLES_1, SAMPLES_2), "-skipDeprecated", "-src", localPath(SRC_1, SRC_2, SRC_3, SRC_4), - "-srcLink", localPath(PATH_2) + "=remote2#suffix2;path1=remote1#suffix1", + "-srcLink", localPath(PATH_2) + "=remote2#suffix2;" + localPath(PATH_3) + "=remote3#suffix3;" + + "path1=remote1#suffix1", "-sourceSetName", "setName", "-suppressedFiles", localPath(SUP_1, SUP_2)); From 80ea834ea226317c108c2381dd4453022386005c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Fri, 30 Aug 2024 16:40:13 -0700 Subject: [PATCH 05/34] More API cleanups --- .../rife/bld/extension/DokkaOperation.java | 30 +++++++++++-------- .../bld/extension/DokkaOperationTest.java | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/rife/bld/extension/DokkaOperation.java b/src/main/java/rife/bld/extension/DokkaOperation.java index c3e71c0..05cbcbc 100644 --- a/src/main/java/rife/bld/extension/DokkaOperation.java +++ b/src/main/java/rife/bld/extension/DokkaOperation.java @@ -373,8 +373,7 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation globalPackageOptions(String... options) { - globalPackageOptions_.addAll(List.of(options)); - return this; + return globalPackageOptions(List.of(options)); } /** @@ -415,8 +414,7 @@ public class DokkaOperation extends AbstractProcessOperation { * @return this operation instance */ public DokkaOperation globalSrcLink(String... links) { - globalSrcLinks_.addAll(List.of(links)); - return this; + return globalSrcLink(List.of(links)); } /** @@ -448,6 +446,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param files one or more files * @return this operation instance + * @see #includes(Collection) */ public DokkaOperation includes(File... files) { return includes(List.of(files)); @@ -462,6 +461,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param files one or more files * @return this operation instance + * @see #includesStrings(Collection) */ public DokkaOperation includes(String... files) { return includesStrings(List.of(files)); @@ -476,6 +476,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param files one or more files * @return this operation instance + * @see #includesPaths(Collection) */ public DokkaOperation includes(Path... files) { return includesPaths(List.of(files)); @@ -500,6 +501,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param files the markdown files * @return this operation instance + * @see #includes(File...) */ public DokkaOperation includes(Collection files) { includes_.addAll(files); @@ -515,10 +517,10 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param files the markdown files * @return this operation instance + * @see #includes(Path...) */ public DokkaOperation includesPaths(Collection files) { - includes_.addAll(files.stream().map(Path::toFile).toList()); - return this; + return includes(files.stream().map(Path::toFile).toList()); } /** @@ -530,10 +532,10 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param files the markdown files * @return this operation instance + * @see #includes(String...) */ public DokkaOperation includesStrings(Collection files) { - includes_.addAll(files.stream().map(File::new).toList()); - return this; + return includes(files.stream().map(File::new).toList()); } /** @@ -758,6 +760,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param jars one or more jars * @return this operation instance + * @see #includes(Collection) */ public DokkaOperation pluginsClasspath(File... jars) { return pluginsClasspath(List.of(jars)); @@ -768,6 +771,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param jars one or more jars * @return this operation instance + * @see #pluginsClasspathStrings(Collection) */ public DokkaOperation pluginsClasspath(String... jars) { return pluginsClasspathStrings(List.of(jars)); @@ -778,6 +782,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param jars one or more jars * @return this operation instance + * @see #pluginsClasspathPaths(Collection) */ public DokkaOperation pluginsClasspath(Path... jars) { return pluginsClasspathPaths(List.of(jars)); @@ -797,6 +802,7 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param jars the jars * @return this operation instance + * @see #pluginsClasspath(Collection) */ public DokkaOperation pluginsClasspath(Collection jars) { pluginsClasspath_.addAll(jars); @@ -808,10 +814,10 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param jars the jars * @return this operation instance + * @see #pluginsClasspath(Path...) */ public DokkaOperation pluginsClasspathPaths(Collection jars) { - pluginsClasspath_.addAll(jars.stream().map(Path::toFile).toList()); - return this; + return pluginsClasspath(jars.stream().map(Path::toFile).toList()); } /** @@ -819,10 +825,10 @@ public class DokkaOperation extends AbstractProcessOperation { * * @param jars the jars * @return this operation instance + * @see #pluginsClasspath(String...) */ public DokkaOperation pluginsClasspathStrings(Collection jars) { - pluginsClasspath_.addAll(jars.stream().map(File::new).toList()); - return this; + return pluginsClasspath(jars.stream().map(File::new).toList()); } /** diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index 398fd22..ca19b54 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -245,7 +245,7 @@ class DokkaOperationTest { @Test void pluginClasspathTest() { var op = new DokkaOperation(); - + op.pluginsClasspath(List.of(new File(FILE_1), new File(FILE_2))); assertThat(op.pluginsClasspath()).as("List(File...)").containsExactly(new File(FILE_1), new File(FILE_2)); op.pluginsClasspath().clear(); From 0703d31e9d36b47a35c479df6b2542f67196253b Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Fri, 30 Aug 2024 16:41:04 -0700 Subject: [PATCH 06/34] Version 1.0.1 --- examples/lib/bld/bld-wrapper.properties | 4 ++-- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 09caa18..f8a4f28 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -1,8 +1,8 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1-SNAPSHOT -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1-SNAPSHOT +bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index ba769ed..ad0cc59 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -33,7 +33,7 @@ public class DokkaOperationBuild extends Project { public DokkaOperationBuild() { pkg = "rife.bld.extension"; name = "bld-dokka"; - version = version(1, 0, 1, "SNAPSHOT"); + version = version(1, 0, 1); javaRelease = 17; From 0983f323a205a7c14170d2aa1163d9ebecac08cb Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:17:18 -0700 Subject: [PATCH 07/34] Added GitHub repository --- .../bld/extension/DokkaOperationBuild.java | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index ad0cc59..165b251 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -63,28 +63,26 @@ public class DokkaOperationBuild extends Project { publishOperation() .repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2")) + .repository(repository("github")) .info() .groupId("com.uwyn.rife2") .artifactId(name) .description("bld Dokka Extension") .url("https://github.com/rife2/bld-dokka") - .developer( - new PublishDeveloper() - .id("ethauvin") - .name("Erik C. Thauvin") - .email("erik@thauvin.net") - .url("https://erik.thauvin.net/") + .developer(new PublishDeveloper() + .id("ethauvin") + .name("Erik C. Thauvin") + .email("erik@thauvin.net") + .url("https://erik.thauvin.net/") ) - .license( - new PublishLicense() - .name("The Apache License, Version 2.0") - .url("https://www.apache.org/licenses/LICENSE-2.0.txt") + .license(new PublishLicense() + .name("The Apache License, Version 2.0") + .url("https://www.apache.org/licenses/LICENSE-2.0.txt") ) - .scm( - new PublishScm() - .connection("scm:git:https://github.com/rife2/bld-dokka.git") - .developerConnection("scm:git:git@github.com:rife2/bld-dokka.git") - .url("https://github.com/rife2/bld-dokka") + .scm(new PublishScm() + .connection("scm:git:https://github.com/rife2/bld-dokka.git") + .developerConnection("scm:git:git@github.com:rife2/bld-dokka.git") + .url("https://github.com/rife2/bld-dokka") ) .signKey(property("sign.key")) .signPassphrase(property("sign.passphrase")); From d797c515bb223c832b38bdbb74a0bda24574612a Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:17:34 -0700 Subject: [PATCH 08/34] Added soft assertions --- .../bld/extension/DokkaOperationTest.java | 50 +++++++++++-------- .../bld/extension/dokka/SourceSetTest.java | 39 ++++++++------- 2 files changed, 51 insertions(+), 38 deletions(-) diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index ca19b54..baa27a3 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -16,6 +16,7 @@ package rife.bld.extension; +import org.assertj.core.api.AutoCloseableSoftAssertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import rife.bld.blueprints.BaseProjectBlueprint; @@ -107,23 +108,27 @@ class DokkaOperationTest { ))) .suppressInheritedMembers(true); - assertThat(op.globalLinks()).as("globalLinks").hasSize(2); - assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4); - assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4); - assertThat(op.includes()).as("includes").hasSize(4); - assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3); - assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9); + try (var softly = new AutoCloseableSoftAssertions()) { + softly.assertThat(op.globalLinks()).as("globalLinks").hasSize(2); + softly.assertThat(op.globalPackageOptions()).as("globalPackageOptions").hasSize(4); + softly.assertThat(op.globalSrcLink()).as("globalSrcLink").hasSize(4); + softly.assertThat(op.includes()).as("includes").hasSize(4); + softly.assertThat(op.pluginConfigurations()).as("pluginConfigurations").hasSize(3); + softly.assertThat(op.pluginsClasspath()).as("pluginsClasspath").hasSize(9); + } var params = op.executeConstructProcessCommandList(); - for (var p : args) { - var found = false; - for (var a : params) { - if (a.startsWith(p)) { - found = true; - break; + try (var softly = new AutoCloseableSoftAssertions()) { + for (var p : args) { + var found = false; + for (var a : params) { + if (a.startsWith(p)) { + found = true; + break; + } } + softly.assertThat(found).as(p + " not found.").isTrue(); } - assertThat(found).as(p + " not found.").isTrue(); } var path = EXAMPLES.getAbsolutePath(); @@ -157,14 +162,17 @@ class DokkaOperationTest { assertThat(params).hasSize(matches.size()); - IntStream.range(0, params.size()).forEach(i -> { - if (params.get(i).contains(".jar;")) { - var jars = params.get(i).split(";"); - Arrays.stream(jars).forEach(jar -> assertThat(matches.get(i)).as(matches.get(i)).contains(jar)); - } else { - assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i)); - } - }); + try (var softly = new AutoCloseableSoftAssertions()) { + IntStream.range(0, params.size()).forEach(i -> { + if (params.get(i).contains(".jar;")) { + var jars = params.get(i).split(";"); + Arrays.stream(jars).forEach(jar -> + softly.assertThat(matches.get(i)).as(matches.get(i)).contains(jar)); + } else { + softly.assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i)); + } + }); + } } @Test diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index 0927bd8..971e603 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -16,6 +16,7 @@ package rife.bld.extension.dokka; +import org.assertj.core.api.AutoCloseableSoftAssertions; import org.junit.jupiter.api.Test; import java.io.File; @@ -225,28 +226,32 @@ class SourceSetTest { .srcLink(Path.of(PATH_3), "remote3", "#suffix3") .suppressedFiles(SUP_1, SUP_2); - assertThat(sourceSet.classpath()).as("classpath").hasSize(2); - assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2); - assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2); - assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2); - assertThat(sourceSet.includes()).as("includes").hasSize(4); - assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2); - assertThat(sourceSet.samples()).as("samples").hasSize(2); - assertThat(sourceSet.src()).as("src").hasSize(4); - assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3); - assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2); + try (var softly = new AutoCloseableSoftAssertions()) { + softly.assertThat(sourceSet.classpath()).as("classpath").hasSize(2); + softly.assertThat(sourceSet.dependentSourceSets()).as("dependentSourceSets").hasSize(2); + softly.assertThat(sourceSet.documentedVisibilities()).as("documentedVisibilities").hasSize(2); + softly.assertThat(sourceSet.externalDocumentationLinks()).as("externalDocumentationLinks").hasSize(2); + softly.assertThat(sourceSet.includes()).as("includes").hasSize(4); + softly.assertThat(sourceSet.perPackageOptions()).as("perPackageOptions").hasSize(2); + softly.assertThat(sourceSet.samples()).as("samples").hasSize(2); + softly.assertThat(sourceSet.src()).as("src").hasSize(4); + softly.assertThat(sourceSet.srcLinks()).as("srcLinks").hasSize(3); + softly.assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2); + } var params = sourceSet.args(); - for (var p : args) { - var found = false; - for (var a : params) { - if (a.startsWith(p)) { - found = true; - break; + try (var softly = new AutoCloseableSoftAssertions()) { + for (var p : args) { + var found = false; + for (var a : params) { + if (a.startsWith(p)) { + found = true; + break; + } } + softly.assertThat(found).as(p + " not found.").isTrue(); } - assertThat(found).as(p + " not found.").isTrue(); } var matches = List.of( From ca811b1469918efd06e67d55f81f871debfda7a0 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:22:57 -0700 Subject: [PATCH 09/34] Updated dependencies Bumped JUnit version to 5.11.3 Bumped PMD extension version to 1.1.7 Bumped JDK to version 23 (GitHub CI Workflow) Bumped Kotlin to version 2.0.21 Bumped Kotlin extension to version 1.0.2 --- .github/workflows/bld.yml | 6 +++--- config/pmd.xml | 4 ++-- examples/lib/bld/bld-wrapper.properties | 2 +- examples/src/bld/java/com/example/ExampleBuild.java | 6 +++--- lib/bld/bld-wrapper.properties | 2 +- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 5 +++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index aa4fa67..4df475f 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -1,6 +1,6 @@ name: bld-ci -on: [ push, pull_request, workflow_dispatch ] +on: [push, pull_request, workflow_dispatch] jobs: build-bld-project: @@ -8,8 +8,8 @@ jobs: strategy: matrix: - java-version: [ 17, 21, 22 ] - kotlin-version: [ 1.19.24, 2.0.0 ] + java-version: [17, 21, 23] + kotlin-version: [1.9.24, 2.0.21] steps: - name: Checkout source repository diff --git a/config/pmd.xml b/config/pmd.xml index 3d3203c..2641880 100644 --- a/config/pmd.xml +++ b/config/pmd.xml @@ -7,9 +7,9 @@ - - + + diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index f8a4f28..6bfa1c8 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.1 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.2 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index 1e6c71b..fb250a3 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -34,13 +34,13 @@ public class ExampleBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); - final var kotlin = version(2, 0, 20); + final var kotlin = version(2, 0, 21); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))); // Include the Kotlin source directory when creating or publishing sources Java Archives jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 5d0bba4..196e2c9 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.5 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.7 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 165b251..fe8a40f 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -39,6 +39,7 @@ public class DokkaOperationBuild extends Project { downloadSources = true; autoDownloadPurge = true; + repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); var dokka = version(1, 9, 20); @@ -51,8 +52,8 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 0))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))) .include(dependency("org.assertj", "assertj-core", version(3, 26, 3))); javadocOperation() From aa8d50d4cb8d8b3a033153218db03dc5ff69902c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:23:21 -0700 Subject: [PATCH 10/34] Minor cleanups --- src/main/java/rife/bld/extension/DokkaOperation.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/rife/bld/extension/DokkaOperation.java b/src/main/java/rife/bld/extension/DokkaOperation.java index 05cbcbc..5531bcf 100644 --- a/src/main/java/rife/bld/extension/DokkaOperation.java +++ b/src/main/java/rife/bld/extension/DokkaOperation.java @@ -45,13 +45,13 @@ import java.util.stream.Collectors; @SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes") public class DokkaOperation extends AbstractProcessOperation { public static final String SEMICOLON = ";"; - private final static String GFM_PLUGIN_REGEXP = + private static final String GFM_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|gfm-plugin|freemarker).*\\.jar$"; - private final static String HTML_PLUGIN_REGEXP = + private static final String HTML_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|kotlinx-html-jvm|freemarker).*\\.jar$"; - private final static String JAVADOC_PLUGIN_REGEXP = + private static final String JAVADOC_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|javadoc-plugin|kotlin-as-java-plugin|korte-jvm).*\\.jar$"; - private final static String JEKYLL_PLUGIN_REGEXP = + private static final String JEKYLL_PLUGIN_REGEXP = "^.*(dokka-base|analysis-kotlin-descriptors|jekyll-plugin|gfm-plugin|freemarker).*\\.jar$"; private final Logger LOGGER = Logger.getLogger(DokkaOperation.class.getName()); private final Map globalLinks_ = new ConcurrentHashMap<>(); From b8a02dce9eebe3f9fff49285ff4e41d7ef50b096 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sun, 27 Oct 2024 16:54:11 -0700 Subject: [PATCH 11/34] Changed to ConcurrentSkipListMap to preserve order --- src/main/java/rife/bld/extension/dokka/SourceSet.java | 9 +++++---- .../java/rife/bld/extension/dokka/SourceSetTest.java | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/rife/bld/extension/dokka/SourceSet.java b/src/main/java/rife/bld/extension/dokka/SourceSet.java index 4062a1e..4e31c5b 100644 --- a/src/main/java/rife/bld/extension/dokka/SourceSet.java +++ b/src/main/java/rife/bld/extension/dokka/SourceSet.java @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentSkipListMap; import java.util.stream.Collectors; /** @@ -33,15 +33,16 @@ import java.util.stream.Collectors; * @author Erik C. Thauvin * @since 1.0 */ +@SuppressWarnings("PMD.UseConcurrentHashMap") public class SourceSet { private final Collection classpath_ = new ArrayList<>(); - private final Map dependentSourceSets_ = new ConcurrentHashMap<>(); + private final Map dependentSourceSets_ = new ConcurrentSkipListMap<>(); private final Collection documentedVisibilities_ = new ArrayList<>(); - private final Map externalDocumentationLinks_ = new ConcurrentHashMap<>(); + private final Map externalDocumentationLinks_ = new ConcurrentSkipListMap<>(); private final Collection includes_ = new ArrayList<>(); private final Collection perPackageOptions_ = new ArrayList<>(); private final Collection samples_ = new ArrayList<>(); - private final Map srcLinks_ = new ConcurrentHashMap<>(); + private final Map srcLinks_ = new ConcurrentSkipListMap<>(); private final Collection src_ = new ArrayList<>(); private final Collection suppressedFiles_ = new ArrayList<>(); private AnalysisPlatform analysisPlatform_; diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index 971e603..bc3290e 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -171,7 +171,7 @@ class SourceSetTest { var matches = List.of( "-classpath", localPath(PATH_1, PATH_2), "-dependentSourceSets", "set1/set2;set3/set4", - "-externalDocumentationLinks", "link3^link4^^link1^link2", + "-externalDocumentationLinks", "link1^link2^^link3^link4", "-perPackageOptions", OPTION_1 + ';' + OPTION_2, "-samples", localPath(SAMPLES_1, SAMPLES_2, SAMPLES_3), "-suppressedFiles", localPath(SUP_1, SUP_2, SUP_3) From 7b7a17393ca03b888ce142d6c8a33f2190b34176 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 19 Dec 2024 06:54:14 -0800 Subject: [PATCH 12/34] Bumped dependencies Bumped Dokka to version 2.0.0 Bumped bld PMD extension to version 1.1.7 Bumped bld Kotlin extension to version 1.0.3 Bumped Kotlin to version 2.0.21 Bumped JUnit to version 5.11.4 --- .github/workflows/bld.yml | 2 +- examples/lib/bld/bld-wrapper.properties | 2 +- examples/src/bld/java/com/example/ExampleBuild.java | 6 +++--- lib/bld/bld-wrapper.properties | 2 +- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 6 +++--- src/test/java/rife/bld/extension/DokkaOperationTest.java | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 4df475f..3b50260 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: java-version: [17, 21, 23] - kotlin-version: [1.9.24, 2.0.21] + kotlin-version: [1.9.24, 2.1.0] steps: - name: Checkout source repository diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 6bfa1c8..0be688d 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.2 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.3 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index fb250a3..a038e13 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -34,13 +34,13 @@ public class ExampleBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); - final var kotlin = version(2, 0, 21); + final var kotlin = version(2, 1, 0); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4))); // Include the Kotlin source directory when creating or publishing sources Java Archives jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 196e2c9..76a15a0 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.7 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.8 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index fe8a40f..93bc2c4 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -42,7 +42,7 @@ public class DokkaOperationBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); - var dokka = version(1, 9, 20); + var dokka = version(2, 0, 0); scope(compile) .include(dependency("org.jetbrains.dokka", "dokka-cli", dokka)) .include(dependency("org.jetbrains.dokka", "dokka-base", dokka)) @@ -52,8 +52,8 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("com.uwyn.rife2", "bld", version(2, 1, 0))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 3))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 3))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4))) .include(dependency("org.assertj", "assertj-core", version(3, 26, 3))); javadocOperation() diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index baa27a3..014e5be 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -132,7 +132,7 @@ class DokkaOperationTest { } var path = EXAMPLES.getAbsolutePath(); - var dokkaJar = "1.9.20.jar"; + var dokkaJar = "2.0.0.jar"; var matches = List.of("java", "-cp", path + "/lib/bld/dokka-cli-" + dokkaJar, "org.jetbrains.dokka.MainKt", From d4eec410403b42111cd762028b4705377c847dbf Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Thu, 19 Dec 2024 07:16:59 -0800 Subject: [PATCH 13/34] Version 1.0.2 --- examples/lib/bld/bld-wrapper.properties | 2 +- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 0be688d..bc90f69 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -1,7 +1,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.1 +bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.2 bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.3 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 93bc2c4..5c25f9a 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -33,13 +33,13 @@ public class DokkaOperationBuild extends Project { public DokkaOperationBuild() { pkg = "rife.bld.extension"; name = "bld-dokka"; - version = version(1, 0, 1); + version = version(1, 0, 2); javaRelease = 17; downloadSources = true; autoDownloadPurge = true; - + repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); var dokka = version(2, 0, 0); From 0a6be415e90ecd496eb709e6cfae018d25892d00 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 28 Dec 2024 17:48:30 -0800 Subject: [PATCH 14/34] Bumped PMD extension to version 1.1.9 --- lib/bld/bld-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 76a15a0..f1493b7 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.8 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.9 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 From 09aef884cb5285e24d6484f0c651803ae4b3d8e0 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 28 Dec 2024 17:49:57 -0800 Subject: [PATCH 15/34] Bumped AssertJ to version 3.27.0 --- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 5c25f9a..79bc45e 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -54,7 +54,7 @@ public class DokkaOperationBuild extends Project { scope(test) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4))) - .include(dependency("org.assertj", "assertj-core", version(3, 26, 3))); + .include(dependency("org.assertj", "assertj-core", version(3, 27, 0))); javadocOperation() .javadocOptions() From 600b46a9fbe357f2618be7a50e36512a928ce057 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Jan 2025 00:14:15 -0800 Subject: [PATCH 16/34] Updated Extensions Bumped Exec extension to version 1.0.4 Bumped PMD extension to version 1.1.10 --- lib/bld/bld-wrapper.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index f1493b7..c87320d 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -1,8 +1,8 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= -bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.3 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.9 +bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.4 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.10 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.1.0 From 77e3be82b69712f84b3fc68e6580de711e2b32e3 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Jan 2025 00:14:50 -0800 Subject: [PATCH 17/34] Bumped AssertJ to version 3.27.2 --- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 79bc45e..9885e3a 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -54,7 +54,7 @@ public class DokkaOperationBuild extends Project { scope(test) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4))) - .include(dependency("org.assertj", "assertj-core", version(3, 27, 0))); + .include(dependency("org.assertj", "assertj-core", version(3, 27, 2))); javadocOperation() .javadocOptions() From 82da957696099cbadaed34439688deacdfd5ecb4 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Jan 2025 00:15:24 -0800 Subject: [PATCH 18/34] Bumped bld to version 2.2.0 --- .idea/libraries/bld.xml | 4 ++-- .vscode/settings.json | 2 +- README.md | 2 +- examples/.idea/libraries/bld.xml | 4 ++-- examples/.vscode/settings.json | 2 +- examples/lib/bld/bld-wrapper.jar | Bin 30440 -> 30440 bytes examples/lib/bld/bld-wrapper.properties | 4 ++-- lib/bld/bld-wrapper.jar | Bin 30440 -> 30440 bytes lib/bld/bld-wrapper.properties | 2 +- .../bld/extension/DokkaOperationBuild.java | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml index 1d0172b..defcfad 100644 --- a/.idea/libraries/bld.xml +++ b/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/.vscode/settings.json b/.vscode/settings.json index 4c33beb..a3f4fd0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.1.0.jar", + "${HOME}/.bld/dist/bld-2.2.0.jar", "lib/**/*.jar" ] } diff --git a/README.md b/README.md index cb9d556..604a960 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) -[![bld](https://img.shields.io/badge/2.1.0-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) +[![bld](https://img.shields.io/badge/2.2.0-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![Release](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/releases/com/uwyn/rife2/bld-dokka/maven-metadata.xml?color=blue)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-dokka) [![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-dokka/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-dokka) [![GitHub CI](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml) diff --git a/examples/.idea/libraries/bld.xml b/examples/.idea/libraries/bld.xml index 5c4010c..553c281 100644 --- a/examples/.idea/libraries/bld.xml +++ b/examples/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/examples/.vscode/settings.json b/examples/.vscode/settings.json index 4c33beb..a3f4fd0 100644 --- a/examples/.vscode/settings.json +++ b/examples/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.1.0.jar", + "${HOME}/.bld/dist/bld-2.2.0.jar", "lib/**/*.jar" ] } diff --git a/examples/lib/bld/bld-wrapper.jar b/examples/lib/bld/bld-wrapper.jar index 6a5e8d408ab79c691980633949ff88510efb6ae5..217cb90a9d4bbde92f5e1b54a6365d8199ef2d41 100644 GIT binary patch delta 203 zcmaFymhr_~M!o=VW)=|!4h{~6Hxsp^Ci2y?fas0=CN^NkqnshM0T=HiJZzMV+Mu*Z+4E3GxFi=3=9mcKpf!B$Rxsmuy1l+ qi4(-0EhQdc#-!37FZg!QA)03thCr$kQWiZKI2fHynG#iGbib_NCpRv-@WW@Hj!K-f1q rufz#r&z2GoFk@0_Fhn36##mSC0ulLE8Vi*w^Wy-y5@hn^wPn@-HR3z9 diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index bc90f69..00ed008 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.2 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.3 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.4 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.1.0 +bld.version=2.2.0 diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index 8c94be9f39c2bad4c699985663f9676dd56929e1..880b8e00042d2f061b56127b9e8141314c51dab5 100644 GIT binary patch delta 203 zcmaFymhr_~M!o=VW)=|!4h{~6Clj@!Ci2y?fas0=CN^NkqnshM0T=HiJZzMV+Mu*Z+4E3GxFi=3=9mcKpf!B$Rxsmuy1l+ qi4(-0EhQdc#-!3 Date: Tue, 14 Jan 2025 00:24:33 -0800 Subject: [PATCH 19/34] Updated copyright for 2025 --- examples/lib/bld/bld-wrapper.properties | 8 -------- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 2 +- src/main/java/rife/bld/extension/DokkaOperation.java | 2 +- .../java/rife/bld/extension/dokka/AnalysisPlatform.java | 2 +- .../rife/bld/extension/dokka/DocumentedVisibility.java | 2 +- src/main/java/rife/bld/extension/dokka/LoggingLevel.java | 2 +- src/main/java/rife/bld/extension/dokka/OutputFormat.java | 2 +- src/main/java/rife/bld/extension/dokka/SourceSet.java | 2 +- src/test/java/rife/bld/extension/DokkaOperationTest.java | 6 +++--- src/test/java/rife/bld/extension/TestUtils.java | 2 +- src/test/java/rife/bld/extension/dokka/SourceSetTest.java | 2 +- 11 files changed, 12 insertions(+), 20 deletions(-) delete mode 100644 examples/lib/bld/bld-wrapper.properties diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties deleted file mode 100644 index 00ed008..0000000 --- a/examples/lib/bld/bld-wrapper.properties +++ /dev/null @@ -1,8 +0,0 @@ -bld.downloadExtensionJavadoc=false -bld.downloadExtensionSources=true -bld.downloadLocation= -bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.2 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.4 -bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES -bld.sourceDirectories= -bld.version=2.2.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index a6a30ef..11e76c1 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/rife/bld/extension/DokkaOperation.java b/src/main/java/rife/bld/extension/DokkaOperation.java index 5531bcf..c8e6762 100644 --- a/src/main/java/rife/bld/extension/DokkaOperation.java +++ b/src/main/java/rife/bld/extension/DokkaOperation.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/rife/bld/extension/dokka/AnalysisPlatform.java b/src/main/java/rife/bld/extension/dokka/AnalysisPlatform.java index dd6ff1a..0f6c1a4 100644 --- a/src/main/java/rife/bld/extension/dokka/AnalysisPlatform.java +++ b/src/main/java/rife/bld/extension/dokka/AnalysisPlatform.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/rife/bld/extension/dokka/DocumentedVisibility.java b/src/main/java/rife/bld/extension/dokka/DocumentedVisibility.java index dae65a4..76e368c 100644 --- a/src/main/java/rife/bld/extension/dokka/DocumentedVisibility.java +++ b/src/main/java/rife/bld/extension/dokka/DocumentedVisibility.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/rife/bld/extension/dokka/LoggingLevel.java b/src/main/java/rife/bld/extension/dokka/LoggingLevel.java index b493e11..1cac7ae 100644 --- a/src/main/java/rife/bld/extension/dokka/LoggingLevel.java +++ b/src/main/java/rife/bld/extension/dokka/LoggingLevel.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/rife/bld/extension/dokka/OutputFormat.java b/src/main/java/rife/bld/extension/dokka/OutputFormat.java index 0d4a2c0..a1a5f37 100644 --- a/src/main/java/rife/bld/extension/dokka/OutputFormat.java +++ b/src/main/java/rife/bld/extension/dokka/OutputFormat.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/main/java/rife/bld/extension/dokka/SourceSet.java b/src/main/java/rife/bld/extension/dokka/SourceSet.java index 4e31c5b..a6336e7 100644 --- a/src/main/java/rife/bld/extension/dokka/SourceSet.java +++ b/src/main/java/rife/bld/extension/dokka/SourceSet.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index 014e5be..babccf4 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -78,7 +78,7 @@ class DokkaOperationTest { var op = new DokkaOperation() .delayTemplateSubstitution(true) .failOnWarning(true) - .fromProject(new BaseProjectBlueprint(EXAMPLES, "com.example", "Example")) + .fromProject(new BaseProjectBlueprint(EXAMPLES, "com.example", "example", "Example")) .globalLinks("s", "gLink1") .globalLinks(Map.of("s2", "gLink2")) .globalPackageOptions(OPTION_1, OPTION_2) @@ -185,7 +185,7 @@ class DokkaOperationTest { void executeTest() { var op = new DokkaOperation() .fromProject( - new BaseProjectBlueprint(EXAMPLES, "com.example", "examples")) + new BaseProjectBlueprint(EXAMPLES, "com.example", "examples", "Examples")) .outputDir("build/javadoc") .outputFormat(OutputFormat.JAVADOC); assertThatCode(op::execute).doesNotThrowAnyException(); diff --git a/src/test/java/rife/bld/extension/TestUtils.java b/src/test/java/rife/bld/extension/TestUtils.java index 832d549..5c164bc 100644 --- a/src/test/java/rife/bld/extension/TestUtils.java +++ b/src/test/java/rife/bld/extension/TestUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java index bc3290e..f6fd76e 100644 --- a/src/test/java/rife/bld/extension/dokka/SourceSetTest.java +++ b/src/test/java/rife/bld/extension/dokka/SourceSetTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the original author or authors. + * Copyright 2023-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. From 1055f0586ff888a11a1dccd314a2b6ddd9982e6c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Jan 2025 12:05:16 -0800 Subject: [PATCH 20/34] Version 1.0.3 --- .idea/icon.svg | 13 +++++++++++++ examples/lib/bld/bld-wrapper.properties | 8 ++++++++ .../rife/bld/extension/DokkaOperationBuild.java | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .idea/icon.svg create mode 100644 examples/lib/bld/bld-wrapper.properties diff --git a/.idea/icon.svg b/.idea/icon.svg new file mode 100644 index 0000000..81220b4 --- /dev/null +++ b/.idea/icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties new file mode 100644 index 0000000..f92a45b --- /dev/null +++ b/examples/lib/bld/bld-wrapper.properties @@ -0,0 +1,8 @@ +bld.downloadExtensionJavadoc=false +bld.downloadExtensionSources=true +bld.downloadLocation= +bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.3 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.4 +bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES +bld.sourceDirectories= +bld.version=2.2.0 diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 11e76c1..af3da62 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -33,7 +33,7 @@ public class DokkaOperationBuild extends Project { public DokkaOperationBuild() { pkg = "rife.bld.extension"; name = "bld-dokka"; - version = version(1, 0, 2); + version = version(1, 0, 3); javaRelease = 17; From 7f23fccca29312993fb3abe9ac2522acf461bcfb Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 25 Feb 2025 09:47:15 -0800 Subject: [PATCH 21/34] Bump JUnit to version 5.12.0 --- examples/src/bld/java/com/example/ExampleBuild.java | 4 ++-- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index a038e13..ec73fe2 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -39,8 +39,8 @@ public class ExampleBuild extends Project { .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 0))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 0))); // Include the Kotlin source directory when creating or publishing sources Java Archives jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index af3da62..6ce2e42 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -52,9 +52,9 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("com.uwyn.rife2", "bld", version(2, 2, 0))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 11, 4))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 11, 4))) .include(dependency("org.assertj", "assertj-core", version(3, 27, 2))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 0))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 0))) javadocOperation() .javadocOptions() From 4976d37b555bdc7a5fdd61cb2fac597c0658a313 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 25 Feb 2025 09:47:57 -0800 Subject: [PATCH 22/34] Bump AssertJ to version 3.27.3 --- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 6ce2e42..6f60709 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -55,6 +55,7 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.assertj", "assertj-core", version(3, 27, 2))); .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 0))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 0))) + .include(dependency("org.assertj", "assertj-core", version(3, 27, 3))); javadocOperation() .javadocOptions() From 5460413a5d5b8742dbd2df25275873fa72b8890c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 25 Feb 2025 09:49:02 -0800 Subject: [PATCH 23/34] Bump Kotlin to version 2.1.10 --- .github/workflows/bld.yml | 2 +- examples/src/bld/java/com/example/ExampleBuild.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 3b50260..57ccfea 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: java-version: [17, 21, 23] - kotlin-version: [1.9.24, 2.1.0] + kotlin-version: [1.9.25, 2.1.10] steps: - name: Checkout source repository diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index ec73fe2..af92107 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -34,7 +34,7 @@ public class ExampleBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); - final var kotlin = version(2, 1, 0); + final var kotlin = version(2, 1, 10); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) From 3dc7060ad56381f59b82ba50744fe74fd72194dc Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 25 Feb 2025 09:49:53 -0800 Subject: [PATCH 24/34] Update pages actions to latest versions --- .github/workflows/pages.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index e191f6d..88c2cd6 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -47,11 +47,11 @@ jobs: uses: actions/configure-pages@v3 - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v3 with: # Upload generated Javadocs repository path: "build/javadoc/" - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v1 + uses: actions/deploy-pages@v4 From 45aae137f0ea160e996de4fa918bfd2893d82015 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 25 Feb 2025 09:51:32 -0800 Subject: [PATCH 25/34] Bump bld to version 2.2.1 --- .idea/libraries/bld.xml | 4 ++-- .vscode/settings.json | 2 +- README.md | 2 +- examples/.idea/libraries/bld.xml | 4 ++-- examples/.vscode/settings.json | 2 +- examples/lib/bld/bld-wrapper.jar | Bin 30440 -> 30440 bytes examples/lib/bld/bld-wrapper.properties | 2 +- lib/bld/bld-wrapper.jar | Bin 30440 -> 30440 bytes lib/bld/bld-wrapper.properties | 4 ++-- .../bld/extension/DokkaOperationBuild.java | 3 +-- 10 files changed, 11 insertions(+), 12 deletions(-) diff --git a/.idea/libraries/bld.xml b/.idea/libraries/bld.xml index defcfad..f9b1d1d 100644 --- a/.idea/libraries/bld.xml +++ b/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/.vscode/settings.json b/.vscode/settings.json index a3f4fd0..ba429d0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.2.0.jar", + "${HOME}/.bld/dist/bld-2.2.1.jar", "lib/**/*.jar" ] } diff --git a/README.md b/README.md index 604a960..b8cdc19 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) -[![bld](https://img.shields.io/badge/2.2.0-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) +[![bld](https://img.shields.io/badge/2.2.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![Release](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/releases/com/uwyn/rife2/bld-dokka/maven-metadata.xml?color=blue)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-dokka) [![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-dokka/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-dokka) [![GitHub CI](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml) diff --git a/examples/.idea/libraries/bld.xml b/examples/.idea/libraries/bld.xml index 553c281..153a060 100644 --- a/examples/.idea/libraries/bld.xml +++ b/examples/.idea/libraries/bld.xml @@ -2,12 +2,12 @@ - + - + diff --git a/examples/.vscode/settings.json b/examples/.vscode/settings.json index a3f4fd0..ba429d0 100644 --- a/examples/.vscode/settings.json +++ b/examples/.vscode/settings.json @@ -9,7 +9,7 @@ ], "java.configuration.updateBuildConfiguration": "automatic", "java.project.referencedLibraries": [ - "${HOME}/.bld/dist/bld-2.2.0.jar", + "${HOME}/.bld/dist/bld-2.2.1.jar", "lib/**/*.jar" ] } diff --git a/examples/lib/bld/bld-wrapper.jar b/examples/lib/bld/bld-wrapper.jar index 217cb90a9d4bbde92f5e1b54a6365d8199ef2d41..814993b0cb7d7fb2241457eabbffae601adfeba4 100644 GIT binary patch delta 187 zcmaFymhr_~M&1B#W)=|!4h{|mhRqQZdFz;g)W$wj8xTFY*Isk;dz;xzAkOAq`)&wB z+KF8cETUR)o)OIWUT6rGnyg)-sK~+);LXk<_eVm3oq>UY6^H}88JR>F;I>T8EpY}L ozq!N{O#d$l0n=fn5PEH?E13VaG!7zO=Fb6iK@`Z$$!p830iowPu>b%7 delta 187 zcmaFymhr_~M&1B#W)=|!4h{~6Hxsod^42i}sf~T6HXwR(uf68x_cpVcK%C9J_T3PM zv=h4?SVXnpJR_L#z0eRWHCekvQIUZmz?+?;A60{}t!L~Q^7 diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index f92a45b..1ef1f26 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -5,4 +5,4 @@ bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.3 bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.4 bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= -bld.version=2.2.0 +bld.version=2.2.1 diff --git a/lib/bld/bld-wrapper.jar b/lib/bld/bld-wrapper.jar index 880b8e00042d2f061b56127b9e8141314c51dab5..8705a25864c72b04442abb5058822c0cc5aaa2ad 100644 GIT binary patch delta 187 zcmaFymhr_~M&1B#W)=|!4h{~6Uz;K(^42i}sf~T6HXwR(uf68x_cpVcK%C9J_T3PM zv=h4?SVXnpJR_L#z0eRWHCekvQIUlqz?+>z?vI25I|Bm)D-Z{GGct)Vz-^hFTjC5h peshT@nEqc90;a=CA@tf(S1|u;X&gkn%%213f+&!glh>A60{{<2NkISr delta 187 zcmaFymhr_~M&1B#W)=|!4h{~6Clj?N^42i}sf~T6HXwR(uf68x_cpVcK%C9J_T3PM zv=h4?SVXnpJR_L#z0eRWHCekvQIUZmz?+?;A60{|6SL+t Date: Tue, 25 Feb 2025 09:51:54 -0800 Subject: [PATCH 26/34] 1.0.4-SNAPSHOT --- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 6facee5..44aaeae 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -33,7 +33,7 @@ public class DokkaOperationBuild extends Project { public DokkaOperationBuild() { pkg = "rife.bld.extension"; name = "bld-dokka"; - version = version(1, 0, 3); + version = version(1, 0, 4, "SNAPSHOT"); javaRelease = 17; From 22e259a78bb9b903e81e587f3a6c7180e9c809b6 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Mar 2025 12:50:30 -0700 Subject: [PATCH 27/34] Bump PMD extension to version 1.2.1 --- lib/bld/bld-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/bld/bld-wrapper.properties b/lib/bld/bld-wrapper.properties index 6d3e0c7..c5da09f 100644 --- a/lib/bld/bld-wrapper.properties +++ b/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.4 -bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.0 +bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.1 bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.2.1 From 5f02107c7c880345cf45c8256e95a3483e902048 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Mar 2025 12:52:38 -0700 Subject: [PATCH 28/34] Bump JUnit to version 5.12.1 --- examples/src/bld/java/com/example/ExampleBuild.java | 5 +++-- src/bld/java/rife/bld/extension/DokkaOperationBuild.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index af92107..c4c9ed6 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -39,8 +39,9 @@ public class ExampleBuild extends Project { .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 0))); + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1))) + .include(dependency("org.junit.platform", "junit-platform-launcher", version(1, 12, 1))); // Include the Kotlin source directory when creating or publishing sources Java Archives jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 44aaeae..5e27c6e 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -52,8 +52,8 @@ public class DokkaOperationBuild extends Project { .include(dependency("org.jetbrains.dokka", "jekyll-plugin", dokka)) .include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1))); scope(test) - .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 0))) - .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 0))) + .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1))) + .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1))) .include(dependency("org.assertj", "assertj-core", version(3, 27, 3))); javadocOperation() From e763ce32edb4cfdd7e31045eaa6f9c6ecd974ede Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Mar 2025 12:57:56 -0700 Subject: [PATCH 29/34] Add generic installation instructions --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b8cdc19..2e8db74 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,14 @@ [![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-dokka/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-dokka) [![GitHub CI](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-dokka/actions/workflows/bld.yml) -To install, please refer to the [extensions](https://github.com/rife2/bld/wiki/Extensions) and [support](https://github.com/rife2/bld/wiki/Kotlin-Support) -documentation. +To install the latest version, add the following to the `lib/bld/bld-wrapper.properties` file: + +```properties +bld.extension-dokka=com.uwyn.rife2:bld-dokka +``` + +For more information, please refer to the [extensions](https://github.com/rife2/bld/wiki/Extensions) documentation. + ## Generate API Documentation From b1cfaf643ceec1cda9060273b0a635261c6d159c Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 18 Mar 2025 23:35:07 -0700 Subject: [PATCH 30/34] JDK 24 --- .github/workflows/bld.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 57ccfea..476a19d 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - java-version: [17, 21, 23] + java-version: [17, 21, 24] kotlin-version: [1.9.25, 2.1.10] steps: From eb630fb6cbc6d7e9703ac538c360747c6c5eb466 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 24 Mar 2025 01:06:55 -0700 Subject: [PATCH 31/34] Bump Kotlin to version 2.1.20 --- .github/workflows/bld.yml | 2 +- examples/.idea/bld.xml | 6 ++++++ examples/src/bld/java/com/example/ExampleBuild.java | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 examples/.idea/bld.xml diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 476a19d..1b0e08f 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: java-version: [17, 21, 24] - kotlin-version: [1.9.25, 2.1.10] + kotlin-version: [1.9.25, 2.1.20] steps: - name: Checkout source repository diff --git a/examples/.idea/bld.xml b/examples/.idea/bld.xml new file mode 100644 index 0000000..6600cee --- /dev/null +++ b/examples/.idea/bld.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/examples/src/bld/java/com/example/ExampleBuild.java b/examples/src/bld/java/com/example/ExampleBuild.java index c4c9ed6..c39cb2d 100644 --- a/examples/src/bld/java/com/example/ExampleBuild.java +++ b/examples/src/bld/java/com/example/ExampleBuild.java @@ -34,7 +34,7 @@ public class ExampleBuild extends Project { repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); - final var kotlin = version(2, 1, 10); + final var kotlin = version(2, 1, 20); scope(compile) .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); scope(test) From f2d61671edb1644a05a2ec7ab4fde297231edbf4 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 24 Mar 2025 01:09:59 -0700 Subject: [PATCH 32/34] Add OS matrix to include the latest Ubuntu, Windows, and macOS --- .github/workflows/bld.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/bld.yml b/.github/workflows/bld.yml index 1b0e08f..f778f97 100644 --- a/.github/workflows/bld.yml +++ b/.github/workflows/bld.yml @@ -4,12 +4,13 @@ on: [push, pull_request, workflow_dispatch] jobs: build-bld-project: - runs-on: ubuntu-latest - strategy: matrix: java-version: [17, 21, 24] kotlin-version: [1.9.25, 2.1.20] + os: [ ubuntu-latest, windows-latest, macos-latest ] + + runs-on: ${{ matrix.os }} steps: - name: Checkout source repository From 320f6a99e7a745c219f1b20ea8e8d4f39c93d13b Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 24 Mar 2025 01:14:21 -0700 Subject: [PATCH 33/34] Bump Kotlin extension to version 1.1.0-SNAPSHOT --- examples/lib/bld/bld-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/lib/bld/bld-wrapper.properties b/examples/lib/bld/bld-wrapper.properties index 1ef1f26..73eee8e 100644 --- a/examples/lib/bld/bld-wrapper.properties +++ b/examples/lib/bld/bld-wrapper.properties @@ -2,7 +2,7 @@ bld.downloadExtensionJavadoc=false bld.downloadExtensionSources=true bld.downloadLocation= bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.3 -bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.4 +bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.1.0-SNAPSHOT bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.sourceDirectories= bld.version=2.2.1 From 11a00fdc531cacd3e1961e1d3faeebe64627d136 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 24 Mar 2025 01:21:31 -0700 Subject: [PATCH 34/34] Only check kotlinc arguments on Linux --- .../java/rife/bld/extension/DokkaOperationBuild.java | 12 ++++++++---- .../java/rife/bld/extension/DokkaOperationTest.java | 3 +++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java index 5e27c6e..5d42723 100644 --- a/src/bld/java/rife/bld/extension/DokkaOperationBuild.java +++ b/src/bld/java/rife/bld/extension/DokkaOperationBuild.java @@ -23,6 +23,7 @@ import rife.bld.publish.PublishLicense; import rife.bld.publish.PublishScm; import java.util.List; +import java.util.Locale; import static rife.bld.dependencies.Repository.*; import static rife.bld.dependencies.Scope.compile; @@ -104,10 +105,13 @@ public class DokkaOperationBuild extends Project { @Override public void test() throws Exception { - new ExecOperation() - .fromProject(this) - .command("scripts/cliargs.sh") - .execute(); + var os = System.getProperty("os.name"); + if (os != null && os.toLowerCase(Locale.US).contains("linux")) { + new ExecOperation() + .fromProject(this) + .command("scripts/cliargs.sh") + .execute(); + } super.test(); } } diff --git a/src/test/java/rife/bld/extension/DokkaOperationTest.java b/src/test/java/rife/bld/extension/DokkaOperationTest.java index babccf4..cea3975 100644 --- a/src/test/java/rife/bld/extension/DokkaOperationTest.java +++ b/src/test/java/rife/bld/extension/DokkaOperationTest.java @@ -19,6 +19,8 @@ package rife.bld.extension; import org.assertj.core.api.AutoCloseableSoftAssertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.EnabledOnOs; +import org.junit.jupiter.api.condition.OS; import rife.bld.blueprints.BaseProjectBlueprint; import rife.bld.extension.dokka.LoggingLevel; import rife.bld.extension.dokka.OutputFormat; @@ -69,6 +71,7 @@ class DokkaOperationTest { } @Test + @EnabledOnOs(OS.LINUX) void executeConstructProcessCommandListTest() throws IOException { var args = Files.readAllLines(Paths.get("src", "test", "resources", "dokka-args.txt"));