Compare commits

..

No commits in common. "main" and "1.0.0" have entirely different histories.
main ... 1.0.0

33 changed files with 184 additions and 856 deletions

View file

@ -1,16 +1,15 @@
name: bld-ci
on: [push, pull_request, workflow_dispatch]
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 }}
java-version: [ 17, 21, 22 ]
kotlin-version: [ 1.19.24, 2.0.0 ]
steps:
- name: Checkout source repository

View file

@ -47,11 +47,11 @@ jobs:
uses: actions/configure-pages@v3
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v1
with:
# Upload generated Javadocs repository
path: "build/javadoc/"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v1

6
.idea/bld.xml generated
View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BldConfiguration">
<events />
</component>
</project>

13
.idea/icon.svg generated
View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 179 108" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-210.511,-96.3382)">
<g transform="matrix(1,0,0,1,-23.3386,-649.816)">
<g transform="matrix(0.221288,0,0,0.24,73.9536,390.254)">
<path d="M722.568,1482.92L722.568,1921.1L808.968,1921.1L808.968,1888.7C822.168,1907.9 846.168,1930.1 893.568,1930.1C933.168,1930.1 961.968,1917.5 985.368,1893.5C1012.97,1865.9 1027.37,1827.5 1027.37,1786.1C1027.37,1741.7 1011.17,1705.1 985.368,1680.5C961.968,1658.3 928.968,1644.5 892.368,1644.5C862.968,1644.5 830.568,1654.1 808.968,1683.5L808.968,1482.92L722.568,1482.92ZM871.368,1718.9C888.768,1718.9 903.768,1723.7 917.568,1736.9C930.168,1748.9 938.568,1766.3 938.568,1787.9C938.568,1807.7 930.168,1825.1 917.568,1837.1C904.368,1849.7 887.568,1855.7 872.568,1855.7C856.368,1855.7 837.168,1849.1 823.368,1835.9C813.168,1826.3 803.568,1810.1 803.568,1787.9C803.568,1765.1 812.568,1749.5 822.768,1738.7C836.568,1724.3 852.768,1718.9 871.368,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
<rect x="1083.77" y="1482.92" width="86.4" height="438.182" style="fill:rgb(250,144,82);fill-rule:nonzero;"/>
<path d="M1531.37,1482.92L1444.97,1482.92L1444.97,1683.5C1423.37,1654.1 1390.97,1644.5 1361.57,1644.5C1324.97,1644.5 1291.97,1658.3 1268.57,1680.5C1242.77,1705.1 1226.57,1741.7 1226.57,1786.1C1226.57,1827.5 1240.97,1865.9 1268.57,1893.5C1291.97,1917.5 1320.77,1930.1 1360.37,1930.1C1407.77,1930.1 1431.77,1907.9 1444.97,1888.7L1444.97,1921.1L1531.37,1921.1L1531.37,1482.92ZM1382.57,1718.9C1401.17,1718.9 1417.37,1724.3 1431.17,1738.7C1441.37,1749.5 1450.37,1765.1 1450.37,1787.9C1450.37,1810.1 1440.77,1826.3 1430.57,1835.9C1416.77,1849.1 1397.57,1855.7 1381.37,1855.7C1366.37,1855.7 1349.57,1849.7 1336.37,1837.1C1323.77,1825.1 1315.37,1807.7 1315.37,1787.9C1315.37,1766.3 1323.77,1748.9 1336.37,1736.9C1350.17,1723.7 1365.17,1718.9 1382.57,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -2,12 +2,12 @@
<library name="bld">
<CLASSES>
<root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1.jar!/" />
<root url="file://$PROJECT_DIR$/lib/bld" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1-sources.jar!/" />
<root url="file://$PROJECT_DIR$/lib/bld" />
</SOURCES>
<excluded>

View file

@ -7,7 +7,7 @@
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/compile" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
</library>
</component>

View file

@ -8,7 +8,7 @@
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/runtime" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
</library>
</component>

View file

@ -8,7 +8,7 @@
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/test" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
</library>
</component>

9
.idea/runConfigurations/Run Tests.xml generated Normal file
View file

@ -0,0 +1,9 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Run Tests" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="rife.bld.extension.CompileKotlinOperationTest" />
<module name="app" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>

View file

@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
"${HOME}/.bld/dist/bld-2.2.1.jar",
"${HOME}/.bld/dist/bld-2.0.1.jar",
"lib/**/*.jar"
]
}

View file

@ -2,19 +2,13 @@
[![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.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld)
[![bld](https://img.shields.io/badge/2.0.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)
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.
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.
## Generate API Documentation

View file

@ -7,9 +7,9 @@
<!-- BEST PRACTICES -->
<rule ref="category/java/bestpractices.xml">
<exclude name="AvoidPrintStackTrace"/>
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
<exclude name="JUnitTestContainsTooManyAsserts"/>
<exclude name="GuardLogStatement"/>
<exclude name="UnitTestContainsTooManyAsserts"/>
<exclude name="UnitTestShouldUseTestAnnotation"/>
</rule>
<rule ref="category/java/bestpractices.xml/MissingOverride">

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BldConfiguration">
<events />
</component>
</project>

View file

@ -2,12 +2,12 @@
<library name="bld">
<CLASSES>
<root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1-sources.jar!/" />
</SOURCES>
<excluded>
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />

View file

@ -7,7 +7,7 @@
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/compile" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
</library>
</component>

View file

@ -8,7 +8,7 @@
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/runtime" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
</library>
</component>

View file

@ -8,7 +8,7 @@
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/test" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
</library>
</component>

View file

@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
"${HOME}/.bld/dist/bld-2.2.1.jar",
"${HOME}/.bld/dist/bld-2.0.1.jar",
"lib/**/*.jar"
]
}

Binary file not shown.

View file

@ -1,8 +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.1.0-SNAPSHOT
bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.0
bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.0
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories=
bld.version=2.2.1
bld.version=2.0.1

View file

@ -34,14 +34,13 @@ public class ExampleBuild extends Project {
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES);
final var kotlin = version(2, 1, 20);
final var kotlin = version(2, 0, 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, 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(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 3)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 3)));
// Include the Kotlin source directory when creating or publishing sources Java Archives
jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin"));

Binary file not shown.

View file

@ -1,8 +1,8 @@
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.1
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.2
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.4
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories=
bld.version=2.2.1
bld.version=2.0.1

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.
@ -23,7 +23,6 @@ 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;
@ -34,16 +33,15 @@ public class DokkaOperationBuild extends Project {
public DokkaOperationBuild() {
pkg = "rife.bld.extension";
name = "bld-dokka";
version = version(1, 0, 4, "SNAPSHOT");
version = version(1, 0, 0);
javaRelease = 17;
downloadSources = true;
autoDownloadPurge = true;
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
var dokka = version(2, 0, 0);
var dokka = version(1, 9, 20);
scope(compile)
.include(dependency("org.jetbrains.dokka", "dokka-cli", dokka))
.include(dependency("org.jetbrains.dokka", "dokka-base", dokka))
@ -51,11 +49,11 @@ 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, 2, 1)));
.include(dependency("com.uwyn.rife2", "bld", version(2, 0, 1)));
scope(test)
.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)));
.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.assertj", "assertj-core", version(3, 26, 3)));
javadocOperation()
.javadocOptions()
@ -65,23 +63,25 @@ 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()
.developer(
new PublishDeveloper()
.id("ethauvin")
.name("Erik C. Thauvin")
.email("erik@thauvin.net")
.url("https://erik.thauvin.net/")
)
.license(new PublishLicense()
.license(
new PublishLicense()
.name("The Apache License, Version 2.0")
.url("https://www.apache.org/licenses/LICENSE-2.0.txt")
)
.scm(new PublishScm()
.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")
@ -105,13 +105,10 @@ public class DokkaOperationBuild extends Project {
@Override
public void test() throws Exception {
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();
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.
@ -26,11 +26,7 @@ import rife.tools.StringUtils;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -45,13 +41,13 @@ import java.util.stream.Collectors;
@SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
public static final String SEMICOLON = ";";
private static final String GFM_PLUGIN_REGEXP =
private final static String GFM_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|gfm-plugin|freemarker).*\\.jar$";
private static final String HTML_PLUGIN_REGEXP =
private final static String HTML_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|kotlinx-html-jvm|freemarker).*\\.jar$";
private static final String JAVADOC_PLUGIN_REGEXP =
private final static String JAVADOC_PLUGIN_REGEXP =
"^.*(dokka-base|analysis-kotlin-descriptors|javadoc-plugin|kotlin-as-java-plugin|korte-jvm).*\\.jar$";
private static final String JEKYLL_PLUGIN_REGEXP =
private final static 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<String, String> globalLinks_ = new ConcurrentHashMap<>();
@ -373,7 +369,8 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
* @return this operation instance
*/
public DokkaOperation globalPackageOptions(String... options) {
return globalPackageOptions(List.of(options));
globalPackageOptions_.addAll(List.of(options));
return this;
}
/**
@ -414,7 +411,8 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
* @return this operation instance
*/
public DokkaOperation globalSrcLink(String... links) {
return globalSrcLink(List.of(links));
globalSrcLinks_.addAll(List.of(links));
return this;
}
/**
@ -446,10 +444,10 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param files one or more files
* @return this operation instance
* @see #includes(Collection)
*/
public DokkaOperation includes(File... files) {
return includes(List.of(files));
includes_.addAll(List.of(files));
return this;
}
/**
@ -461,28 +459,12 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param files one or more files
* @return this operation instance
* @see #includesStrings(Collection)
*/
public DokkaOperation includes(String... files) {
return includesStrings(List.of(files));
includes_.addAll(Arrays.stream(files).map(File::new).toList());
return this;
}
/**
* Sets the Markdown files that contain module and package documentation.
* <p>
* The contents of specified files are parsed and embedded into documentation as module and package descriptions.
* <p>
* This can be configured on per-package basis.
*
* @param files one or more files
* @return this operation instance
* @see #includesPaths(Collection)
*/
public DokkaOperation includes(Path... files) {
return includesPaths(List.of(files));
}
/**
* Retrieves the markdown files that contain the module and package documentation.
*
@ -501,43 +483,12 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param files the markdown files
* @return this operation instance
* @see #includes(File...)
*/
public DokkaOperation includes(Collection<File> files) {
includes_.addAll(files);
return this;
}
/**
* Sets the Markdown files that contain module and package documentation.
* <p>
* The contents of specified files are parsed and embedded into documentation as module and package descriptions.
* <p>
* This can be configured on per-package basis.
*
* @param files the markdown files
* @return this operation instance
* @see #includes(Path...)
*/
public DokkaOperation includesPaths(Collection<Path> files) {
return includes(files.stream().map(Path::toFile).toList());
}
/**
* Sets the Markdown files that contain module and package documentation.
* <p>
* The contents of specified files are parsed and embedded into documentation as module and package descriptions.
* <p>
* This can be configured on per-package basis.
*
* @param files the markdown files
* @return this operation instance
* @see #includes(String...)
*/
public DokkaOperation includesStrings(Collection<String> files) {
return includes(files.stream().map(File::new).toList());
}
/**
* JSON configuration file path.
*
@ -548,33 +499,6 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
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.
*
@ -665,15 +589,6 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
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.
* <p>
@ -683,19 +598,8 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
* @return this operation instance
*/
public DokkaOperation outputDir(String outputDir) {
return outputDir(new File(outputDir));
}
/**
* Sets the output directory path, {@code ./dokka} by default.
* <p>
* 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());
outputDir_ = new File(outputDir);
return this;
}
/**
@ -737,12 +641,12 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
/**
* Sets the configuration for Dokka plugins.
*
* @param pluginConfigurations the map of configurations
* @param pluginConfiguratione the map of configurations
* @return this operation instance
* @see #pluginConfigurations(String, String)
*/
public DokkaOperation pluginConfigurations(Map<String, String> pluginConfigurations) {
pluginsConfiguration_.putAll(pluginConfigurations);
public DokkaOperation pluginConfigurations(Map<String, String> pluginConfiguratione) {
pluginsConfiguration_.putAll(pluginConfiguratione);
return this;
}
@ -760,10 +664,10 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param jars one or more jars
* @return this operation instance
* @see #includes(Collection)
*/
public DokkaOperation pluginsClasspath(File... jars) {
return pluginsClasspath(List.of(jars));
pluginsClasspath_.addAll(List.of(jars));
return this;
}
/**
@ -771,21 +675,10 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param jars one or more jars
* @return this operation instance
* @see #pluginsClasspathStrings(Collection)
*/
public DokkaOperation pluginsClasspath(String... jars) {
return pluginsClasspathStrings(List.of(jars));
}
/**
* Sets the jars for Dokka plugins and their dependencies.
*
* @param jars one or more jars
* @return this operation instance
* @see #pluginsClasspathPaths(Collection)
*/
public DokkaOperation pluginsClasspath(Path... jars) {
return pluginsClasspathPaths(List.of(jars));
pluginsClasspath_.addAll(Arrays.stream(jars).map(File::new).toList());
return this;
}
/**
@ -802,35 +695,12 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param jars the jars
* @return this operation instance
* @see #pluginsClasspath(Collection)
*/
public DokkaOperation pluginsClasspath(Collection<File> jars) {
pluginsClasspath_.addAll(jars);
return this;
}
/**
* Sets the jars for Dokka plugins and their dependencies.
*
* @param jars the jars
* @return this operation instance
* @see #pluginsClasspath(Path...)
*/
public DokkaOperation pluginsClasspathPaths(Collection<Path> jars) {
return pluginsClasspath(jars.stream().map(Path::toFile).toList());
}
/**
* Sets the jars for Dokka plugins and their dependencies.
*
* @param jars the jars
* @return this operation instance
* @see #pluginsClasspath(String...)
*/
public DokkaOperation pluginsClasspathStrings(Collection<String> jars) {
return pluginsClasspath(jars.stream().map(File::new).toList());
}
/**
* Sets the configurations for a source set.
* <p>

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.
@ -19,12 +19,8 @@ package rife.bld.extension.dokka;
import rife.bld.extension.DokkaOperation;
import java.io.File;
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.ConcurrentSkipListMap;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
@ -33,16 +29,15 @@ import java.util.stream.Collectors;
* @author <a href="https://erik.thauvin.net/">Erik C. Thauvin</a>
* @since 1.0
*/
@SuppressWarnings("PMD.UseConcurrentHashMap")
public class SourceSet {
private final Collection<File> classpath_ = new ArrayList<>();
private final Map<String, String> dependentSourceSets_ = new ConcurrentSkipListMap<>();
private final Map<String, String> dependentSourceSets_ = new ConcurrentHashMap<>();
private final Collection<DocumentedVisibility> documentedVisibilities_ = new ArrayList<>();
private final Map<String, String> externalDocumentationLinks_ = new ConcurrentSkipListMap<>();
private final Map<String, String> externalDocumentationLinks_ = new ConcurrentHashMap<>();
private final Collection<File> includes_ = new ArrayList<>();
private final Collection<String> perPackageOptions_ = new ArrayList<>();
private final Collection<File> samples_ = new ArrayList<>();
private final Map<String, String> srcLinks_ = new ConcurrentSkipListMap<>();
private final Map<String, String> srcLinks_ = new ConcurrentHashMap<>();
private final Collection<File> src_ = new ArrayList<>();
private final Collection<File> suppressedFiles_ = new ArrayList<>();
private AnalysisPlatform analysisPlatform_;
@ -88,7 +83,8 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet apiVersion(int apiVersion) {
return apiVersion(String.valueOf(apiVersion));
apiVersion_ = String.valueOf(apiVersion);
return this;
}
/**
@ -240,10 +236,10 @@ 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));
classpath_.addAll(List.of(files));
return this;
}
/**
@ -255,25 +251,10 @@ 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));
}
/**
* Sets classpath for analysis and interactive samples.
* <p>
* This is useful if some types that come from dependencies are not resolved/picked up automatically.
* <p>
* This option accepts both {@code .jar} and {@code .klib} files.
*
* @param files one or more file
* @return this operation instance
* @see #classpathPaths(Collection)
*/
public SourceSet classpath(Path... files) {
return classpathPaths(List.of(files));
classpath_.addAll(Arrays.stream(files).map(File::new).toList());
return this;
}
/**
@ -285,7 +266,6 @@ public class SourceSet {
*
* @param files the collection of files
* @return this operation instance
* @see #classpath(File...)
*/
public SourceSet classpath(Collection<File> files) {
classpath_.addAll(files);
@ -301,36 +281,6 @@ public class SourceSet {
return classpath_;
}
/**
* Sets classpath for analysis and interactive samples.
* <p>
* This is useful if some types that come from dependencies are not resolved/picked up automatically.
* <p>
* This option accepts both {@code .jar} and {@code .klib} files.
*
* @param files the collection of files
* @return this operation instance
* @see #classpath(Path...)
*/
public SourceSet classpathPaths(Collection<Path> files) {
return classpath(files.stream().map(Path::toFile).toList());
}
/**
* Sets classpath for analysis and interactive samples.
* <p>
* This is useful if some types that come from dependencies are not resolved/picked up automatically.
* <p>
* This option accepts both {@code .jar} and {@code .klib} files.
*
* @param files the collection of files
* @return this operation instance
* @see #classpath(String...)
*/
public SourceSet classpathStrings(Collection<String> files) {
return classpath(files.stream().map(File::new).toList());
}
/**
* Sets the names of dependent source sets.
*
@ -452,10 +402,10 @@ public class SourceSet {
*
* @param files one or more files
* @return this operation instance
* @see #includes(Collection)
*/
public SourceSet includes(File... files) {
return includes(List.of(files));
includes_.addAll(List.of(files));
return this;
}
/**
@ -468,29 +418,12 @@ 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));
includes_.addAll(Arrays.stream(files).map(File::new).toList());
return this;
}
/**
* Sets the Markdown files that contain module and package documentation.
* <p>
* The Markdown files that contain module and package documentation.
* <p>
* 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
* @see #classpathPaths(Collection)
*/
public SourceSet includes(Path... files) {
return includesPaths(List.of(files));
}
/**
* Retrieves the Markdown files that contain module and package documentation.
*
@ -510,45 +443,12 @@ public class SourceSet {
*
* @param files the collection of files
* @return this operation instance
* @see #includes(File...)
*/
public SourceSet includes(Collection<File> files) {
includes_.addAll(files);
return this;
}
/**
* Sets the Markdown files that contain module and package documentation.
* <p>
* The Markdown files that contain module and package documentation.
* <p>
* 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
* @see #includes(Path...)
*/
public SourceSet includesPaths(Collection<Path> files) {
return includes(files.stream().map(Path::toFile).toList());
}
/**
* Sets the Markdown files that contain module and package documentation.
* <p>
* The Markdown files that contain module and package documentation.
* <p>
* 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
* @see #classpath(String...)
*/
public SourceSet includesStrings(Collection<String> files) {
return includes(files.stream().map(File::new).toList());
}
/**
* Sets the version of JDK to use for linking to JDK Javadocs.
* <p>
@ -565,15 +465,6 @@ 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.
* <p>
@ -586,7 +477,8 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet jdkVersion(int jdkVersion) {
return jdkVersion(String.valueOf(jdkVersion));
jdkVersion_ = String.valueOf(jdkVersion);
return this;
}
/**
@ -607,7 +499,8 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet languageVersion(int languageVersion) {
return languageVersion(String.valueOf(languageVersion));
languageVersion_ = String.valueOf(languageVersion);
return this;
}
/**
@ -709,7 +602,8 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet perPackageOptions(String... perPackageOptions) {
return perPackageOptions(List.of(perPackageOptions));
perPackageOptions_.addAll(List.of(perPackageOptions));
return this;
}
/**
@ -738,7 +632,6 @@ public class SourceSet {
*
* @param samples the samples
* @return this operation instance
* @see #samples(File...)
*/
public SourceSet samples(Collection<File> samples) {
samples_.addAll(samples);
@ -762,10 +655,10 @@ 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));
samples_.addAll(List.of(samples));
return this;
}
/**
@ -776,52 +669,10 @@ 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));
}
/**
* Set the directories or files that contain sample functions.
* <p>
* 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
* @see #samplesPaths(Collection)
*/
public SourceSet samples(Path... samples) {
return samplesPaths(List.of(samples));
}
/**
* Set the directories or files that contain sample functions.
* <p>
* 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
* @see #samples(Path...)
*/
public SourceSet samplesPaths(Collection<Path> samples) {
return samples(samples.stream().map(Path::toFile).toList());
}
/**
* Set the directories or files that contain sample functions.
* <p>
* 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
* @see #samples(String...)
*/
public SourceSet samplesStrings(Collection<String> samples) {
return samples(samples.stream().map(File::new).toList());
samples_.addAll(Arrays.stream(samples).map(File::new).toList());
return this;
}
/**
@ -858,7 +709,6 @@ public class SourceSet {
*
* @param src the source code roots
* @return this operation instance
* @see #src(File...)
*/
public SourceSet src(Collection<File> src) {
src_.addAll(src);
@ -873,10 +723,10 @@ 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));
src_.addAll(List.of(src));
return this;
}
/**
@ -887,24 +737,10 @@ 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));
}
/**
* Sets the source code roots to be analyzed and documented.
* <p>
* 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
* @see #srcPaths(Collection)
*/
public SourceSet src(Path... src) {
return srcPaths(List.of(src));
src_.addAll(Arrays.stream(src).map(File::new).toList());
return this;
}
/**
@ -938,19 +774,8 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet srcLink(File srcPath, String remotePath, String lineSuffix) {
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);
srcLinks_.put(srcPath.getAbsolutePath(), remotePath + lineSuffix);
return this;
}
/**
@ -962,34 +787,6 @@ public class SourceSet {
return srcLinks_;
}
/**
* Sets the source code roots to be analyzed and documented.
* <p>
* 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
* @see #src(Path...)
*/
public SourceSet srcPaths(Collection<Path> src) {
return src(src.stream().map(Path::toFile).toList());
}
/**
* Sets the source code roots to be analyzed and documented.
* <p>
* 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
* @see #src(String...)
*/
public SourceSet srcStrings(Collection<String> src) {
return src(src.stream().map(File::new).toList());
}
/**
* Sets the paths to files to be suppressed.
* <p>
@ -997,13 +794,13 @@ public class SourceSet {
*
* @param suppressedFiles the suppressed files
* @return this operation instance
* @see #suppressedFiles(File...)
*/
public SourceSet suppressedFiles(Collection<File> suppressedFiles) {
suppressedFiles_.addAll(suppressedFiles);
return this;
}
/**
* Retrieves the paths to files to be suppressed.
*
@ -1020,10 +817,10 @@ 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));
suppressedFiles_.addAll(Arrays.stream(suppressedFiles).map(File::new).toList());
return this;
}
/**
@ -1033,48 +830,9 @@ 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));
}
/**
* Sets the paths to files to be suppressed.
* <p>
* The files to be suppressed when generating documentation.
*
* @param suppressedFiles one or moe suppressed files
* @return this operation instance
* @see #suppressedFilesPaths(Collection)
*/
public SourceSet suppressedFiles(Path... suppressedFiles) {
return suppressedFilesPaths(List.of(suppressedFiles));
}
/**
* Sets the paths to files to be suppressed.
* <p>
* The files to be suppressed when generating documentation.
*
* @param suppressedFiles the suppressed files
* @return this operation instance
* @see #suppressedFiles(Path...)
*/
public SourceSet suppressedFilesPaths(Collection<Path> suppressedFiles) {
return suppressedFiles(suppressedFiles.stream().map(Path::toFile).toList());
}
/**
* Sets the paths to files to be suppressed.
* <p>
* The files to be suppressed when generating documentation.
*
* @param suppressedFiles the suppressed files
* @return this operation instance
* @see #suppressedFiles(String...)
*/
public SourceSet suppressedFilesStrings(Collection<String> suppressedFiles) {
return suppressedFiles(suppressedFiles.stream().map(File::new).toList());
suppressedFiles_.addAll(List.of(suppressedFiles));
return this;
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.
@ -16,11 +16,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;
@ -30,7 +27,6 @@ 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;
@ -71,7 +67,6 @@ class DokkaOperationTest {
}
@Test
@EnabledOnOs(OS.LINUX)
void executeConstructProcessCommandListTest() throws IOException {
var args = Files.readAllLines(Paths.get("src", "test", "resources", "dokka-args.txt"));
@ -81,7 +76,7 @@ class DokkaOperationTest {
var op = new DokkaOperation()
.delayTemplateSubstitution(true)
.failOnWarning(true)
.fromProject(new BaseProjectBlueprint(EXAMPLES, "com.example", "example", "Example"))
.fromProject(new BaseProjectBlueprint(EXAMPLES, "com.example", "Example"))
.globalLinks("s", "gLink1")
.globalLinks(Map.of("s2", "gLink2"))
.globalPackageOptions(OPTION_1, OPTION_2)
@ -111,17 +106,14 @@ class DokkaOperationTest {
)))
.suppressInheritedMembers(true);
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);
}
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);
var params = op.executeConstructProcessCommandList();
try (var softly = new AutoCloseableSoftAssertions()) {
for (var p : args) {
var found = false;
for (var a : params) {
@ -130,12 +122,11 @@ class DokkaOperationTest {
break;
}
}
softly.assertThat(found).as(p + " not found.").isTrue();
}
assertThat(found).as(p + " not found.").isTrue();
}
var path = EXAMPLES.getAbsolutePath();
var dokkaJar = "2.0.0.jar";
var dokkaJar = "1.9.20.jar";
var matches = List.of("java",
"-cp", path + "/lib/bld/dokka-cli-" + dokkaJar,
"org.jetbrains.dokka.MainKt",
@ -165,18 +156,15 @@ class DokkaOperationTest {
assertThat(params).hasSize(matches.size());
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));
Arrays.stream(jars).forEach(jar -> assertThat(matches.get(i)).as(matches.get(i)).contains(jar));
} else {
softly.assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i));
assertThat(params.get(i)).as(params.get(i)).isEqualTo(matches.get(i));
}
});
}
}
@Test
void executeNoProjectTest() {
@ -188,99 +176,9 @@ class DokkaOperationTest {
void executeTest() {
var op = new DokkaOperation()
.fromProject(
new BaseProjectBlueprint(EXAMPLES, "com.example", "examples", "Examples"))
new BaseProjectBlueprint(EXAMPLES, "com.example", "examples"))
.outputDir("build/javadoc")
.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();
}
}

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.

View file

@ -1,5 +1,5 @@
/*
* Copyright 2023-2025 the original author or authors.
* Copyright 2023-2024 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.
@ -16,13 +16,11 @@
package rife.bld.extension.dokka;
import org.assertj.core.api.AutoCloseableSoftAssertions;
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;
@ -31,7 +29,6 @@ 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";
@ -43,7 +40,6 @@ 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";
@ -55,104 +51,6 @@ 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()
@ -171,7 +69,7 @@ class SourceSetTest {
var matches = List.of(
"-classpath", localPath(PATH_1, PATH_2),
"-dependentSourceSets", "set1/set2;set3/set4",
"-externalDocumentationLinks", "link1^link2^^link3^link4",
"-externalDocumentationLinks", "link3^link4^^link1^link2",
"-perPackageOptions", OPTION_1 + ';' + OPTION_2,
"-samples", localPath(SAMPLES_1, SAMPLES_2, SAMPLES_3),
"-suppressedFiles", localPath(SUP_1, SUP_2, SUP_3)
@ -223,25 +121,21 @@ 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);
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);
}
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(2);
assertThat(sourceSet.suppressedFiles()).as("suppressedFiles").hasSize(2);
var params = sourceSet.args();
try (var softly = new AutoCloseableSoftAssertions()) {
for (var p : args) {
var found = false;
for (var a : params) {
@ -250,8 +144,7 @@ class SourceSetTest {
break;
}
}
softly.assertThat(found).as(p + " not found.").isTrue();
}
assertThat(found).as(p + " not found.").isTrue();
}
var matches = List.of(
@ -273,8 +166,7 @@ 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;" + localPath(PATH_3) + "=remote3#suffix3;" +
"path1=remote1#suffix1",
"-srcLink", localPath(PATH_2) + "=remote2#suffix2;path1=remote1#suffix1",
"-sourceSetName", "setName",
"-suppressedFiles", localPath(SUP_1, SUP_2));
@ -287,67 +179,4 @@ 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();
}
}