Compare commits

...

34 commits
1.0.0 ... main

Author SHA1 Message Date
11a00fdc53
Only check kotlinc arguments on Linux
Some checks failed
bld-ci / build-bld-project (17, 1.9.25, macos-latest) (push) Has been cancelled
bld-ci / build-bld-project (17, 1.9.25, ubuntu-latest) (push) Has been cancelled
bld-ci / build-bld-project (17, 1.9.25, windows-latest) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.20, macos-latest) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.20, ubuntu-latest) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.20, windows-latest) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.25, macos-latest) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.25, ubuntu-latest) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.25, windows-latest) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.20, macos-latest) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.20, ubuntu-latest) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.20, windows-latest) (push) Has been cancelled
bld-ci / build-bld-project (24, 1.9.25, macos-latest) (push) Has been cancelled
bld-ci / build-bld-project (24, 1.9.25, ubuntu-latest) (push) Has been cancelled
bld-ci / build-bld-project (24, 1.9.25, windows-latest) (push) Has been cancelled
bld-ci / build-bld-project (24, 2.1.20, macos-latest) (push) Has been cancelled
bld-ci / build-bld-project (24, 2.1.20, ubuntu-latest) (push) Has been cancelled
bld-ci / build-bld-project (24, 2.1.20, windows-latest) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2025-03-24 01:21:31 -07:00
320f6a99e7
Bump Kotlin extension to version 1.1.0-SNAPSHOT
Some checks are pending
bld-ci / build-bld-project (17, 1.9.25, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 1.9.25, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 1.9.25, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.20, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.20, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.20, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.20, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 1.9.25, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 1.9.25, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 1.9.25, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 2.1.20, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 2.1.20, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 2.1.20, windows-latest) (push) Waiting to run
javadocs-pages / deploy (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.20, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.20, windows-latest) (push) Waiting to run
2025-03-24 01:14:21 -07:00
f2d61671ed
Add OS matrix to include the latest Ubuntu, Windows, and macOS
Some checks are pending
bld-ci / build-bld-project (17, 1.9.25, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 1.9.25, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 1.9.25, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.20, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.20, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.20, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.20, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.20, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.20, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 1.9.25, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 1.9.25, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 1.9.25, windows-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 2.1.20, macos-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 2.1.20, ubuntu-latest) (push) Waiting to run
bld-ci / build-bld-project (24, 2.1.20, windows-latest) (push) Waiting to run
javadocs-pages / deploy (push) Waiting to run
2025-03-24 01:09:59 -07:00
eb630fb6cb
Bump Kotlin to version 2.1.20 2025-03-24 01:07:05 -07:00
b1cfaf643c
JDK 24
Some checks failed
bld-ci / build-bld-project (17, 1.9.25) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.10) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.25) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.10) (push) Has been cancelled
bld-ci / build-bld-project (24, 1.9.25) (push) Has been cancelled
bld-ci / build-bld-project (24, 2.1.10) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2025-03-18 23:35:07 -07:00
e763ce32ed
Add generic installation instructions
Some checks are pending
bld-ci / build-bld-project (17, 1.9.25) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.10) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.25) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.10) (push) Waiting to run
bld-ci / build-bld-project (23, 1.9.25) (push) Waiting to run
bld-ci / build-bld-project (23, 2.1.10) (push) Waiting to run
javadocs-pages / deploy (push) Waiting to run
2025-03-18 12:57:56 -07:00
5f02107c7c
Bump JUnit to version 5.12.1 2025-03-18 12:52:38 -07:00
22e259a78b
Bump PMD extension to version 1.2.1 2025-03-18 12:50:30 -07:00
52a6e1c049
1.0.4-SNAPSHOT
Some checks failed
bld-ci / build-bld-project (17, 1.9.25) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.10) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.25) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.10) (push) Has been cancelled
bld-ci / build-bld-project (23, 1.9.25) (push) Has been cancelled
bld-ci / build-bld-project (23, 2.1.10) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2025-02-25 09:51:54 -08:00
45aae137f0
Bump bld to version 2.2.1 2025-02-25 09:51:32 -08:00
3dc7060ad5
Update pages actions to latest versions 2025-02-25 09:49:53 -08:00
5460413a5d
Bump Kotlin to version 2.1.10 2025-02-25 09:49:30 -08:00
4976d37b55
Bump AssertJ to version 3.27.3 2025-02-25 09:47:57 -08:00
7f23fccca2
Bump JUnit to version 5.12.0 2025-02-25 09:47:15 -08:00
1055f0586f
Version 1.0.3
Some checks failed
bld-ci / build-bld-project (17, 1.9.24) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.0) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.0) (push) Has been cancelled
bld-ci / build-bld-project (23, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (23, 2.1.0) (push) Has been cancelled
2025-01-14 12:05:16 -08:00
7adae0e1ff
Updated copyright for 2025 2025-01-14 00:29:28 -08:00
82da957696
Bumped bld to version 2.2.0 2025-01-14 00:24:17 -08:00
77e3be82b6
Bumped AssertJ to version 3.27.2 2025-01-14 00:14:50 -08:00
600b46a9fb
Updated Extensions
Bumped Exec extension to version 1.0.4
Bumped PMD extension to version 1.1.10
2025-01-14 00:14:15 -08:00
09aef884cb
Bumped AssertJ to version 3.27.0
Some checks failed
bld-ci / build-bld-project (17, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.0) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.0) (push) Has been cancelled
bld-ci / build-bld-project (23, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (23, 2.1.0) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2024-12-28 17:49:57 -08:00
0a6be415e9
Bumped PMD extension to version 1.1.9
Some checks are pending
bld-ci / build-bld-project (17, 1.9.24) (push) Waiting to run
bld-ci / build-bld-project (17, 2.1.0) (push) Waiting to run
bld-ci / build-bld-project (21, 1.9.24) (push) Waiting to run
bld-ci / build-bld-project (21, 2.1.0) (push) Waiting to run
bld-ci / build-bld-project (23, 1.9.24) (push) Waiting to run
bld-ci / build-bld-project (23, 2.1.0) (push) Waiting to run
javadocs-pages / deploy (push) Waiting to run
2024-12-28 17:48:30 -08:00
d4eec41040
Version 1.0.2
Some checks failed
bld-ci / build-bld-project (17, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.1.0) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.1.0) (push) Has been cancelled
bld-ci / build-bld-project (23, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (23, 2.1.0) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2024-12-19 07:16:59 -08:00
7b7a17393c
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
2024-12-19 07:13:10 -08:00
b8a02dce9e
Changed to ConcurrentSkipListMap to preserve order
Some checks failed
bld-ci / build-bld-project (17, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.0.21) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.0.21) (push) Has been cancelled
bld-ci / build-bld-project (23, 1.9.24) (push) Has been cancelled
bld-ci / build-bld-project (23, 2.0.21) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2024-10-27 16:54:11 -07:00
aa8d50d4cb
Minor cleanups 2024-10-27 16:23:21 -07:00
ca811b1469
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
2024-10-27 16:22:57 -07:00
d797c515bb
Added soft assertions 2024-10-27 16:19:33 -07:00
0983f323a2
Added GitHub repository 2024-10-27 16:18:18 -07:00
0703d31e9d
Version 1.0.1
Some checks failed
bld-ci / build-bld-project (17, 1.19.24) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
bld-ci / build-bld-project (17, 2.0.0) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.19.24) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.0.0) (push) Has been cancelled
bld-ci / build-bld-project (22, 1.19.24) (push) Has been cancelled
bld-ci / build-bld-project (22, 2.0.0) (push) Has been cancelled
2024-08-30 16:46:12 -07:00
80ea834ea2
More API cleanups 2024-08-30 16:40:13 -07:00
b8e4cc9d91
Bumped bld to version 2.1.0 2024-08-30 16:29:38 -07:00
61d41e2fbe
Cleaned up API to match bld operations and options APIs
Some checks failed
bld-ci / build-bld-project (17, 1.19.24) (push) Has been cancelled
bld-ci / build-bld-project (17, 2.0.0) (push) Has been cancelled
bld-ci / build-bld-project (21, 1.19.24) (push) Has been cancelled
bld-ci / build-bld-project (21, 2.0.0) (push) Has been cancelled
bld-ci / build-bld-project (22, 1.19.24) (push) Has been cancelled
bld-ci / build-bld-project (22, 2.0.0) (push) Has been cancelled
javadocs-pages / deploy (push) Has been cancelled
2024-08-27 23:20:41 -07:00
fdee1781b5
Bumped Kotlin to version 2.0.20 2024-08-27 23:19:36 -07:00
cc7f4cb116
Bumped JUnit to version 5.11.0 2024-08-27 23:18:53 -07:00
33 changed files with 856 additions and 184 deletions

View file

@ -1,15 +1,16 @@
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, 22 ]
kotlin-version: [ 1.19.24, 2.0.0 ]
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

View file

@ -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

6
.idea/bld.xml generated Normal file
View file

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

13
.idea/icon.svg generated Normal file
View file

@ -0,0 +1,13 @@
<?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>

After

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.0.1.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
<root url="file://$PROJECT_DIR$/lib/bld" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1-sources.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.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="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" 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="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" 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="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
</library>
</component>

View file

@ -1,9 +0,0 @@
<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.0.1.jar",
"${HOME}/.bld/dist/bld-2.2.1.jar",
"lib/**/*.jar"
]
}

View file

@ -2,13 +2,19 @@
[![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.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)
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

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">

6
examples/.idea/bld.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?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.0.1.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1-sources.jar!/" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.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="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" 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="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" 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="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" />
</library>
</component>

View file

@ -9,7 +9,7 @@
],
"java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [
"${HOME}/.bld/dist/bld-2.0.1.jar",
"${HOME}/.bld/dist/bld-2.2.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.0
bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.0
bld.extension-dokka=com.uwyn.rife2:bld-dokka:1.0.3
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.0.1
bld.version=2.2.1

View file

@ -34,13 +34,14 @@ 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, 1, 20);
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, 10, 3)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 3)));
.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"));

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.2
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.4
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.4
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.0.1
bld.version=2.2.1

View file

@ -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.
@ -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;
@ -33,15 +34,16 @@ public class DokkaOperationBuild extends Project {
public DokkaOperationBuild() {
pkg = "rife.bld.extension";
name = "bld-dokka";
version = version(1, 0, 0);
version = version(1, 0, 4, "SNAPSHOT");
javaRelease = 17;
downloadSources = true;
autoDownloadPurge = true;
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))
@ -49,11 +51,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, 0, 1)));
.include(dependency("com.uwyn.rife2", "bld", version(2, 2, 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.assertj", "assertj-core", version(3, 26, 3)));
.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()
.javadocOptions()
@ -63,28 +65,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"));
@ -105,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();
}
}

View file

@ -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.
@ -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;
@ -41,13 +45,13 @@ import java.util.stream.Collectors;
@SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
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<String, String> globalLinks_ = new ConcurrentHashMap<>();
@ -369,8 +373,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
* @return this operation instance
*/
public DokkaOperation globalPackageOptions(String... options) {
globalPackageOptions_.addAll(List.of(options));
return this;
return globalPackageOptions(List.of(options));
}
/**
@ -411,8 +414,7 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
* @return this operation instance
*/
public DokkaOperation globalSrcLink(String... links) {
globalSrcLinks_.addAll(List.of(links));
return this;
return globalSrcLink(List.of(links));
}
/**
@ -444,10 +446,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) {
includes_.addAll(List.of(files));
return this;
return includes(List.of(files));
}
/**
@ -459,12 +461,28 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param files one or more files
* @return this operation instance
* @see #includesStrings(Collection)
*/
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.
* <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.
*
@ -483,12 +501,43 @@ 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.
*
@ -499,6 +548,33 @@ 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.
*
@ -589,6 +665,15 @@ 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>
@ -598,8 +683,19 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
* @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.
* <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());
}
/**
@ -641,12 +737,12 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
/**
* 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<String, String> pluginConfiguratione) {
pluginsConfiguration_.putAll(pluginConfiguratione);
public DokkaOperation pluginConfigurations(Map<String, String> pluginConfigurations) {
pluginsConfiguration_.putAll(pluginConfigurations);
return this;
}
@ -664,10 +760,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) {
pluginsClasspath_.addAll(List.of(jars));
return this;
return pluginsClasspath(List.of(jars));
}
/**
@ -675,10 +771,21 @@ public class DokkaOperation extends AbstractProcessOperation<DokkaOperation> {
*
* @param jars one or more jars
* @return this operation instance
* @see #pluginsClasspathStrings(Collection)
*/
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
* @see #pluginsClasspathPaths(Collection)
*/
public DokkaOperation pluginsClasspath(Path... jars) {
return pluginsClasspathPaths(List.of(jars));
}
/**
@ -695,12 +802,35 @@ 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-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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.
@ -19,8 +19,12 @@ package rife.bld.extension.dokka;
import rife.bld.extension.DokkaOperation;
import java.io.File;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
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.stream.Collectors;
/**
@ -29,15 +33,16 @@ 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 ConcurrentHashMap<>();
private final Map<String, String> dependentSourceSets_ = new ConcurrentSkipListMap<>();
private final Collection<DocumentedVisibility> documentedVisibilities_ = new ArrayList<>();
private final Map<String, String> externalDocumentationLinks_ = new ConcurrentHashMap<>();
private final Map<String, String> externalDocumentationLinks_ = new ConcurrentSkipListMap<>();
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 ConcurrentHashMap<>();
private final Map<String, String> srcLinks_ = new ConcurrentSkipListMap<>();
private final Collection<File> src_ = new ArrayList<>();
private final Collection<File> suppressedFiles_ = new ArrayList<>();
private AnalysisPlatform analysisPlatform_;
@ -83,8 +88,7 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet apiVersion(int apiVersion) {
apiVersion_ = String.valueOf(apiVersion);
return this;
return apiVersion(String.valueOf(apiVersion));
}
/**
@ -236,10 +240,10 @@ public class SourceSet {
*
* @param files one or more file
* @return this operation instance
* @see #classpath(Collection)
*/
public SourceSet classpath(File... files) {
classpath_.addAll(List.of(files));
return this;
return classpath(List.of(files));
}
/**
@ -251,10 +255,25 @@ public class SourceSet {
*
* @param files one or more file
* @return this operation instance
* @see #classpathStrings(Collection)
*/
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.
* <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));
}
/**
@ -266,6 +285,7 @@ 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);
@ -281,6 +301,36 @@ 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.
*
@ -402,10 +452,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));
}
/**
@ -418,12 +468,29 @@ public class SourceSet {
*
* @param files one or more files
* @return this operation instance
* @see #classpathStrings(Collection)
*/
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.
* <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.
*
@ -443,12 +510,45 @@ 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>
@ -465,6 +565,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.
* <p>
@ -477,8 +586,7 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet jdkVersion(int jdkVersion) {
jdkVersion_ = String.valueOf(jdkVersion);
return this;
return jdkVersion(String.valueOf(jdkVersion));
}
/**
@ -499,8 +607,7 @@ public class SourceSet {
* @return this operation instance
*/
public SourceSet languageVersion(int languageVersion) {
languageVersion_ = String.valueOf(languageVersion);
return this;
return languageVersion(String.valueOf(languageVersion));
}
/**
@ -602,8 +709,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));
}
/**
@ -632,6 +738,7 @@ public class SourceSet {
*
* @param samples the samples
* @return this operation instance
* @see #samples(File...)
*/
public SourceSet samples(Collection<File> samples) {
samples_.addAll(samples);
@ -655,10 +762,10 @@ public class SourceSet {
*
* @param samples nne or more samples
* @return this operation instance
* @see #samples(Collection)
*/
public SourceSet samples(File... samples) {
samples_.addAll(List.of(samples));
return this;
return samples(List.of(samples));
}
/**
@ -669,10 +776,52 @@ public class SourceSet {
*
* @param samples nne or more samples
* @return this operation instance
* @see #samplesStrings(Collection)
*/
public SourceSet samples(String... samples) {
samples_.addAll(Arrays.stream(samples).map(File::new).toList());
return this;
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());
}
/**
@ -709,6 +858,7 @@ 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);
@ -723,10 +873,10 @@ public class SourceSet {
*
* @param src pne ore moe source code roots
* @return this operation instance
* @see #src(Collection)
*/
public SourceSet src(File... src) {
src_.addAll(List.of(src));
return this;
return src(List.of(src));
}
/**
@ -737,10 +887,24 @@ public class SourceSet {
*
* @param src pne ore moe source code roots
* @return this operation instance
* @see #srcStrings(Collection)
*/
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.
* <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));
}
/**
@ -774,8 +938,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);
}
/**
@ -787,6 +962,34 @@ 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>
@ -794,13 +997,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.
*
@ -817,10 +1020,10 @@ public class SourceSet {
*
* @param suppressedFiles one or moe suppressed files
* @return this operation instance
* @see #suppressedFilesStrings(Collection)
*/
public SourceSet suppressedFiles(String... suppressedFiles) {
suppressedFiles_.addAll(Arrays.stream(suppressedFiles).map(File::new).toList());
return this;
return suppressedFilesStrings(List.of(suppressedFiles));
}
/**
@ -830,9 +1033,48 @@ public class SourceSet {
*
* @param suppressedFiles one or moe suppressed files
* @return this operation instance
* @see #suppressedFiles(Collection)
*/
public SourceSet suppressedFiles(File... suppressedFiles) {
suppressedFiles_.addAll(List.of(suppressedFiles));
return this;
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());
}
}

View file

@ -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.
@ -16,8 +16,11 @@
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;
@ -27,6 +30,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;
@ -67,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"));
@ -76,7 +81,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)
@ -106,27 +111,31 @@ 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();
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",
@ -156,14 +165,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
@ -176,9 +188,99 @@ 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();
}
@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-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.

View file

@ -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.
@ -16,11 +16,13 @@
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;
@ -29,6 +31,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";
@ -40,6 +43,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";
@ -51,6 +55,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()
@ -69,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)
@ -121,30 +223,35 @@ 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);
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);
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(
@ -166,7 +273,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));
@ -179,4 +287,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();
}
}