diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..6fff16c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: monthly diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index cbba07f..12df10e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,36 +11,26 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - task: [check, compatTestJava8, compatTestJava11, compatTestJava17] + task: [check, compatTestJava8, compatTestJava21] fail-fast: false timeout-minutes: 60 - env: - GRADLE_OPTS: -Dorg.gradle.java.installations.fromEnv=JAVA_HOME_8_x64,JAVA_HOME_11_x64,JAVA_HOME_17_x64 steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Setup Java 8 - uses: actions/setup-java@v3 + - name: Setup Java + uses: actions/setup-java@v4 with: distribution: temurin - java-version: 8 - - name: Setup Java 11 - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 11 - - name: Setup Java 17 - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 17 + java-version: | + 8 + 21 - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 + uses: gradle/actions/wrapper-validation@v4 - name: Setup Gradle - uses: gradle/gradle-build-action@v2 + uses: gradle/actions/setup-gradle@v4 - name: Gradle ${{ matrix.task }} run: ./gradlew ${{ matrix.task }} --scan diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index bcd3daa..ce3f79d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -8,22 +8,21 @@ jobs: timeout-minutes: 15 steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Setup Java 11 - uses: actions/setup-java@v2 + - name: Setup Java + uses: actions/setup-java@v4 with: - distribution: zulu - java-version: 11 - - name: Setup Java 17 - uses: actions/setup-java@v2 - with: - distribution: zulu - java-version: 17 + distribution: temurin + java-version: | + 8 + 21 + - name: Validate Gradle Wrapper + uses: gradle/actions/wrapper-validation@v4 - name: Setup Gradle - uses: gradle/gradle-build-action@v2 + uses: gradle/actions/setup-gradle@v4 - name: Gradle publish env: CLOJARS_USER: ${{ secrets.CLOJARS_USER }} diff --git a/README.md b/README.md index 10d3550..85853cb 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ A Gradle plugin providing support for the Clojure and ClojureScript languages. ### Clojure Features - Packaging Clojure code (and/or AOT compiled classes) into a JAR -- Package an Uberjar (via the Gradle [Shadow plugin](http://imperceptiblethoughts.com/shadow/)) +- Package an Uberjar (via the Gradle [Shadow plugin](https://gradleup.com/shadow/)) - AOT compilation - Running clojure.test tests (integrated into Gradle's [Test task](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html)) - Running an nREPL server (supports custom middlewares or handler) @@ -77,7 +77,7 @@ dependencies { // implementation 'group:artifact:version' // needed for test integration - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' // and any other test-specific dependencies // testImplementation 'group:artifact:version' diff --git a/build.gradle.kts b/build.gradle.kts index 3c3cf16..4f4dacb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,23 +3,15 @@ import org.gradle.plugins.ide.eclipse.model.EclipseModel plugins { id("dev.clojurephant.clojure") - id("org.ajoberstar.reckon") id("com.diffplug.spotless") - `java-gradle-plugin` + id("java-gradle-plugin") id("com.gradle.plugin-publish") id("org.ajoberstar.stutter") } group = "dev.clojurephant" -reckon { - setDefaultInferredScope("patch") - stages("alpha", "beta", "rc", "final") - setScopeCalc(calcScopeFromProp().or(calcScopeFromCommitMessages())) - setStageCalc(calcStageFromProp()) -} - java { toolchain { languageVersion.set(JavaLanguageVersion.of(8)) @@ -31,16 +23,16 @@ dependencies { implementation("us.bpsm:edn-java:0.7.1") // util - implementation("org.apache.commons:commons-text:1.10.0") + implementation("org.apache.commons:commons-text:1.11.0") // compat testing compatTestImplementation(gradleTestKit()) - compatTestImplementation("org.clojure:clojure:1.11.1") - compatTestImplementation("org.clojure:tools.namespace:1.4.4") - compatTestImplementation("nrepl:nrepl:1.0.0") - compatTestImplementation("org.ajoberstar:ike.cljj:0.4.1") + compatTestImplementation("org.clojure:clojure:1.12.0") + compatTestImplementation("org.clojure:tools.namespace:1.5.0") + compatTestImplementation("nrepl:nrepl:1.3.1") + compatTestImplementation("org.ajoberstar:cljj:0.5.0") compatTestImplementation("org.clojure:data.xml:0.0.8") - compatTestRuntimeOnly("org.ajoberstar:jovial:0.3.0") + compatTestRuntimeOnly("dev.clojurephant:jovial:0.4.2") } stutter { @@ -49,23 +41,15 @@ stutter { languageVersion.set(JavaLanguageVersion.of(8)) } gradleVersions { - compatibleRange("6.4") + compatibleRange("8.0") } } - val java11 by matrices.creating { + val java21 by matrices.creating { javaToolchain { - languageVersion.set(JavaLanguageVersion.of(11)) + languageVersion.set(JavaLanguageVersion.of(21)) } gradleVersions { - compatibleRange("6.4") - } - } - val java17 by matrices.creating { - javaToolchain { - languageVersion.set(JavaLanguageVersion.of(17)) - } - gradleVersions { - compatibleRange("7.3") + compatibleRange("8.6") } } } @@ -113,6 +97,12 @@ publishing { } pom { + licenses { + license { + name.set("Apache-2.0") + url.set("https://github.com/clojurephant/clojurephant/blob/main/LICENSE") + } + } // include repository info in POM (needed for cljdoc) scm { connection.set("https://github.com/clojurephant/clojurephant.git") @@ -132,37 +122,40 @@ tasks.withType() { } gradlePlugin { + website.set("https://clojurephant.dev/") + vcsUrl.set("https://github.com/clojurephant/clojurephant.git") plugins { create("clojureBase") { id = "dev.clojurephant.clojure-base" displayName = "Clojure base language plugin for Gradle" + description = "Clojure base language plugin for Gradle" implementationClass = "dev.clojurephant.plugin.clojure.ClojureBasePlugin" + tags.set(listOf("clojure", "language")) } create("clojure") { id = "dev.clojurephant.clojure" displayName = "Clojure language plugin for Gradle" + description = "Clojure language plugin for Gradle" implementationClass = "dev.clojurephant.plugin.clojure.ClojurePlugin" + tags.set(listOf("clojure", "language")) } create("clojurescriptBase") { id = "dev.clojurephant.clojurescript-base" displayName = "ClojureScript base language plugin for Gradle" + description = "ClojureScript base language plugin for Gradle" implementationClass = "dev.clojurephant.plugin.clojurescript.ClojureScriptBasePlugin" + tags.set(listOf("clojurescript", "language")) } create("clojurescript") { id = "dev.clojurephant.clojurescript" displayName = "ClojureScript language plugin for Gradle" + description = "ClojureScript language plugin for Gradle" implementationClass = "dev.clojurephant.plugin.clojurescript.ClojureScriptPlugin" + tags.set(listOf("clojurescript", "language")) } } } -pluginBundle { - website = "https://clojurephant.dev/" - vcsUrl = "https://github.com/clojurephant/clojurephant.git" - description = "Clojure and ClojureScript language support for Gradle" - tags = listOf("clojure", "clojurescript", "language") -} - spotless { java { importOrder("java", "javax", "") diff --git a/docs/antora.yml b/docs/antora.yml index 1b6ff47..2580f28 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -8,20 +8,20 @@ nav: - modules/explanation/nav.adoc asciidoc: attributes: - clojurephant-version: "0.7.0" - jovial-version: "0.3.0" + clojurephant-version: "0.8.0" + jovial-version: "0.4.2" - clojure-version: "1.11.1" - clojurescript-version: "1.11.60" + clojure-version: "1.12.0" + clojurescript-version: "1.11.132" pedestal-version: "0.5.10" - reframe-version: "1.2.0" + reframe-version: "1.4.3" component-version: "1.1.0" - component-repl-version: "0.2.0" - figwheel-repl-version: "0.2.18" - ring-jetty-adapter-version: "1.9.5" + component-repl-version: "1.0.0" + figwheel-repl-version: "0.2.20" + ring-jetty-adapter-version: "1.14.1" - nrepl-version: "0.9.0" - cider-nrepl-version: "0.28.5" - piggieback-version: "0.5.3" - tools-namespace-version: "1.3.0" - shadow-plugin-version: "6.1.0" + nrepl-version: "1.3.1" + cider-nrepl-version: "0.55.0" + piggieback-version: "0.6.0" + tools-namespace-version: "1.5.0" + shadow-plugin-version: "8.3.5" diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index cd6491f..811757e 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -16,7 +16,7 @@ In particular, if you have a need to interop with Java code (maybe even other JV Features provided by Gradle (or its ecosystem) that are useful for Clojure programmers. -* Packaging into ZIPs, JARs, or Uberjars (via the third-party link:http://imperceptiblethoughts.com/shadow/[Shadow plugin]) +* Packaging into ZIPs, JARs, or Uberjars (via the third-party link:https://gradleup.com/shadow/[Shadow plugin]) * Multi-project builds * Publishing to Maven repositories (such as Clojars or Maven Central) @@ -109,7 +109,7 @@ dependencies { implementation 'org.clojure:clojurescript:{clojurescript-version}' // testing - testRuntimeOnly 'org.ajoberstar:jovial:{jovial-version}' + testRuntimeOnly 'dev.clojurephant:jovial:{jovial-version}' // backend implementation 'io.pedestal:pedestal.service:{pedestal-version}' @@ -166,14 +166,3 @@ clojurescript { } } ---- - -== Documentation - -Documentation is divided into sections based on your need: - -* xref:tutorials:index.adoc[] - learning-oriented -* xref:howto:index.adoc[] - task-oriented -* xref:reference:index.adoc[] - information-oriented -* xref:explanation:index.adoc[] - understanding-oriented - -Many of these sections are still under-construction so please give feedback on what would be most useful to you. diff --git a/docs/modules/explanation/nav.adoc b/docs/modules/explanation/nav.adoc index 9a1588f..21a2084 100644 --- a/docs/modules/explanation/nav.adoc +++ b/docs/modules/explanation/nav.adoc @@ -1,3 +1,2 @@ -* xref:index.adoc[] -** xref:dependencies.adoc[] -** xref:glossary.adoc[] +.Explanation +* xref:dependencies.adoc[] diff --git a/docs/modules/explanation/pages/glossary.adoc b/docs/modules/explanation/pages/glossary.adoc deleted file mode 100644 index 28a526c..0000000 --- a/docs/modules/explanation/pages/glossary.adoc +++ /dev/null @@ -1,2 +0,0 @@ -= Glossary (🚧) - diff --git a/docs/modules/explanation/pages/index.adoc b/docs/modules/explanation/pages/index.adoc deleted file mode 100644 index afe77e6..0000000 --- a/docs/modules/explanation/pages/index.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= Explanation (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/howto/nav.adoc b/docs/modules/howto/nav.adoc index a27cabf..b83f67f 100644 --- a/docs/modules/howto/nav.adoc +++ b/docs/modules/howto/nav.adoc @@ -1,9 +1,6 @@ -* xref:index.adoc[] -** Editors -*** xref:editors/cider.adoc[] -*** xref:editors/calva.adoc[] -*** xref:editors/cursive.adoc[] -** xref:faq.adoc[] -** xref:migrate-lein.adoc[] -** xref:migrate-boot.adoc[] -** xref:migrate-deps.adoc[] +.How-To Guides +* Editors +** xref:editors/cider.adoc[] +** xref:editors/calva.adoc[] +** xref:editors/cursive.adoc[] +* xref:faq.adoc[] diff --git a/docs/modules/howto/pages/faq.adoc b/docs/modules/howto/pages/faq.adoc index e9b9996..573fc7e 100644 --- a/docs/modules/howto/pages/faq.adoc +++ b/docs/modules/howto/pages/faq.adoc @@ -53,7 +53,7 @@ Then run the `publish` task. == How do I create an uberjar? -Use the Gradle link:http://imperceptiblethoughts.com/shadow/[Shadow plugin]. +Use the Gradle link:https://gradleup.com/shadow/[Shadow plugin]. === Configuration @@ -96,7 +96,7 @@ Ensure your main namespace has `(:gen-class)` in the `ns` declaration: === More information -Read the link:http://imperceptiblethoughts.com/shadow/[Shadow Plugin User Guide]. for full details on their other features. +Read the link:https://gradleup.com/shadow/[Shadow Plugin User Guide]. for full details on their other features. == How do I build Clojure code that depends on Java code? diff --git a/docs/modules/howto/pages/index.adoc b/docs/modules/howto/pages/index.adoc deleted file mode 100644 index dddeac6..0000000 --- a/docs/modules/howto/pages/index.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= How-To Guides (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/howto/pages/migrate-boot.adoc b/docs/modules/howto/pages/migrate-boot.adoc deleted file mode 100644 index f7353ac..0000000 --- a/docs/modules/howto/pages/migrate-boot.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= Migrate from Boot (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/howto/pages/migrate-deps.adoc b/docs/modules/howto/pages/migrate-deps.adoc deleted file mode 100644 index 8e4346d..0000000 --- a/docs/modules/howto/pages/migrate-deps.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= Migrate from deps.edn (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/howto/pages/migrate-lein.adoc b/docs/modules/howto/pages/migrate-lein.adoc deleted file mode 100644 index cf0db91..0000000 --- a/docs/modules/howto/pages/migrate-lein.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= Migrate from Leiningen (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/reference/nav.adoc b/docs/modules/reference/nav.adoc index 98f547e..e43e03f 100644 --- a/docs/modules/reference/nav.adoc +++ b/docs/modules/reference/nav.adoc @@ -1,18 +1,18 @@ -* xref:index.adoc[] -** Plugins -*** xref:plugins/clojure.adoc[clojure] -*** xref:plugins/clojurescript.adoc[clojurescript] -*** xref:plugins/clojure-base.adoc[clojure-base] -*** xref:plugins/clojurescript-base.adoc[clojurescript-base] -** xref:dsl/clojureextension.adoc[Clojure DSL] -*** xref:dsl/clojurebuild.adoc[Build] -*** xref:dsl/clojurecompileoptions.adoc[CompileOptions] -** xref:dsl/clojurescriptextension.adoc[ClojureScript DSL] -*** xref:dsl/clojurescriptbuild.adoc[Build] -*** xref:dsl/clojurescriptcompileoptions.adoc[CompileOptions] -*** xref:dsl/figwheeloptions.adoc[FigwheelOptions] -** Tasks -*** xref:tasks/clojurecheck.adoc[] -*** xref:tasks/clojurecompile.adoc[] -*** xref:tasks/clojurenrepl.adoc[] -*** xref:tasks/clojurescriptcompile.adoc[] +.Reference +* Plugins +** xref:plugins/clojure.adoc[clojure] +** xref:plugins/clojurescript.adoc[clojurescript] +** xref:plugins/clojure-base.adoc[clojure-base] +** xref:plugins/clojurescript-base.adoc[clojurescript-base] +* xref:dsl/clojureextension.adoc[Clojure DSL] +** xref:dsl/clojurebuild.adoc[Build] +** xref:dsl/clojurecompileoptions.adoc[CompileOptions] +* xref:dsl/clojurescriptextension.adoc[ClojureScript DSL] +** xref:dsl/clojurescriptbuild.adoc[Build] +** xref:dsl/clojurescriptcompileoptions.adoc[CompileOptions] +** xref:dsl/figwheeloptions.adoc[FigwheelOptions] +* Tasks +** xref:tasks/clojurecheck.adoc[] +** xref:tasks/clojurecompile.adoc[] +** xref:tasks/clojurenrepl.adoc[] +** xref:tasks/clojurescriptcompile.adoc[] diff --git a/docs/modules/reference/pages/dsl/clojurescriptcompileoptions.adoc b/docs/modules/reference/pages/dsl/clojurescriptcompileoptions.adoc index 8a9a8fc..c582656 100644 --- a/docs/modules/reference/pages/dsl/clojurescriptcompileoptions.adoc +++ b/docs/modules/reference/pages/dsl/clojurescriptcompileoptions.adoc @@ -31,7 +31,7 @@ NOTE: Not all ClojureScript compiler options are supported yet. Open an issue or | |foreignLibs -|link:https://docs.gradle.org/current/javadoc/org/gradle/api/provider/NamedDomainObjectContainer.html[NamedDomainObjectContainer] +|link:https://docs.gradle.org/current/javadoc/org/gradle/api/NamedDomainObjectContainer.html[NamedDomainObjectContainer] | |installDeps diff --git a/docs/modules/reference/pages/index.adoc b/docs/modules/reference/pages/index.adoc deleted file mode 100644 index ab77a94..0000000 --- a/docs/modules/reference/pages/index.adoc +++ /dev/null @@ -1,22 +0,0 @@ -= Reference - -clojurephant uses the common Gradle pattern of providing both _capability_ plugins and _convention_ plugins. - -Capability plugins:: provide the basic machinery for using the language, but leaves it to you to configure -Convention plugins:: extend the capability plugin to provide configuration on top of the capabilities to support common use cases - -TIP: Most people should apply the _convention_ plugins. The capability plugins are for lower level configuration, more suited to an experienced user that doesn't want the default behavior. - -== Convention Plugins - -* xref:plugins/clojure.adoc[] -* xref:plugins/clojurescript.adoc[] - -== Capability Plugins - -* xref:plugins/clojure-base.adoc[] -* xref:plugins/clojurescript-base.adoc[] - -== Common Features - -include::partial$jackin.adoc[leveloffset=+2] diff --git a/docs/modules/reference/pages/plugins/clojure.adoc b/docs/modules/reference/pages/plugins/clojure.adoc index 320c334..4e52d86 100644 --- a/docs/modules/reference/pages/plugins/clojure.adoc +++ b/docs/modules/reference/pages/plugins/clojure.adoc @@ -41,7 +41,7 @@ Clojurephant doesn't provide support out-of-the-box to run `clojure.test` tests, [source, groovy, subs="attributes"] ---- dependencies { - testRuntimeOnly 'org.ajoberstar:jovial:{jovial-version}' + testRuntimeOnly 'dev.clojurephant:jovial:{jovial-version}' } tasks.withType(Test) { diff --git a/docs/modules/tutorials/nav.adoc b/docs/modules/tutorials/nav.adoc index 1e3ffe3..07204d1 100644 --- a/docs/modules/tutorials/nav.adoc +++ b/docs/modules/tutorials/nav.adoc @@ -1,3 +1,2 @@ -* xref:index.adoc[] (🚧) -** xref:new-gradle.adoc[] -** xref:new-clojure.adoc[] (🚧) +.Tutorial +* xref:new-gradle.adoc[] diff --git a/docs/modules/tutorials/pages/index.adoc b/docs/modules/tutorials/pages/index.adoc deleted file mode 100644 index 66c35a7..0000000 --- a/docs/modules/tutorials/pages/index.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= Tutorials (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/tutorials/pages/new-clojure.adoc b/docs/modules/tutorials/pages/new-clojure.adoc deleted file mode 100644 index c133262..0000000 --- a/docs/modules/tutorials/pages/new-clojure.adoc +++ /dev/null @@ -1,4 +0,0 @@ -= New Clojure Users (🚧) -:noindex: - -_Placeholder_ diff --git a/docs/modules/tutorials/pages/new-gradle.adoc b/docs/modules/tutorials/pages/new-gradle.adoc index 7d76330..029565b 100644 --- a/docs/modules/tutorials/pages/new-gradle.adoc +++ b/docs/modules/tutorials/pages/new-gradle.adoc @@ -87,7 +87,7 @@ dependencies { implementation 'org.clojure:clojure:{clojure-version}' // due to how clojure.test is executed, a JUnit test engine (Jovial) is needed - testRuntimeOnly 'org.ajoberstar:jovial:{jovial-version}' + testRuntimeOnly 'dev.clojurephant:jovial:{jovial-version}' // due to the way Gradle's REPL is started, if you need tools.namespace, you must be on 0.3+ devImplementation 'org.clojure:tools.namespace:{tools-namespace-version}' @@ -127,7 +127,7 @@ repositories { dependencies { implementation 'org.clojure:clojure:{clojure-version}' - testRuntimeOnly 'org.ajoberstar:jovial:{jovial-version}' + testRuntimeOnly 'dev.clojurephant:jovial:{jovial-version}' devImplementation 'org.clojure:tools.namespace:{tools-namespace-version}' } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e583..9bbc975 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 774fae8..37f853b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb..faf9300 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +82,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +133,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +200,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 53a6b23..9b42019 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -42,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/manual-test/build.gradle b/manual-test/build.gradle index 836144f..63f86a4 100644 --- a/manual-test/build.gradle +++ b/manual-test/build.gradle @@ -19,25 +19,27 @@ repositories { dependencies { // clojure - implementation 'org.clojure:clojure:1.11.1' - implementation 'org.clojure:clojurescript:1.11.60' + implementation 'org.clojure:clojure:1.12.0' + implementation 'org.clojure:clojurescript:1.11.132' // testing - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' // backend - implementation 'io.pedestal:pedestal.service:0.5.10' - implementation 'io.pedestal:pedestal.jetty:0.5.10' + implementation 'io.pedestal:pedestal.service:0.7.2' + implementation 'io.pedestal:pedestal.jetty:0.7.2' // frontend - implementation 're-frame:re-frame:1.2.0' + implementation 're-frame:re-frame:1.4.3' + implementation 'cljsjs:react:18.3.1-1' + implementation 'cljsjs:react-dom:18.3.1-1' // component implementation 'com.stuartsierra:component:1.1.0' - devImplementation 'com.stuartsierra:component.repl:0.2.0' + devImplementation 'com.stuartsierra:component.repl:1.0.0' // clojurescript repl - devImplementation('dev.clojurephant:clojurephant-tooling:0.1.0-alpha.5') { + devImplementation('dev.clojurephant:clojurephant-tooling:0.1.0') { capabilities { requireCapabilities('dev.clojurephant:clojurephant-tooling-figwheel-main') } diff --git a/manual-test/gradle/wrapper/gradle-wrapper.jar b/manual-test/gradle/wrapper/gradle-wrapper.jar index 249e583..9bbc975 100644 Binary files a/manual-test/gradle/wrapper/gradle-wrapper.jar and b/manual-test/gradle/wrapper/gradle-wrapper.jar differ diff --git a/manual-test/gradle/wrapper/gradle-wrapper.properties b/manual-test/gradle/wrapper/gradle-wrapper.properties index 774fae8..37f853b 100644 --- a/manual-test/gradle/wrapper/gradle-wrapper.properties +++ b/manual-test/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/manual-test/gradlew b/manual-test/gradlew index a69d9cb..faf9300 100755 --- a/manual-test/gradlew +++ b/manual-test/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +82,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +133,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +200,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/manual-test/gradlew.bat b/manual-test/gradlew.bat index 53a6b23..9b42019 100644 --- a/manual-test/gradlew.bat +++ b/manual-test/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -26,6 +28,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -42,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/manual-test/src/dev/clojure/dev.clj b/manual-test/src/dev/clojure/dev.clj index 0e45e48..b9c8d50 100644 --- a/manual-test/src/dev/clojure/dev.clj +++ b/manual-test/src/dev/clojure/dev.clj @@ -1,16 +1,6 @@ (ns dev (:require [com.stuartsierra.component.repl :refer [reset set-init start stop system]] [sample.core :as core] - [cider.piggieback :as piggie] - [figwheel.repl :as frepl])) + [dev.clojurephant.tooling.figwheel-main :as fig])) (set-init core/make-system) - -(defonce env - (frepl/repl-env - :port 5050 - :open-url "http://localhost:8080/index.html" - :output-dir "build/tmp/clojureRepl/public/js/out")) - -(defn cljs-repl [] - (piggie/cljs-repl env)) diff --git a/settings.gradle.kts b/settings.gradle.kts index cde8179..4c35865 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,15 +1,25 @@ pluginManagement { plugins { - id("org.ajoberstar.grgit") version("5.0.0") - id("org.ajoberstar.reckon") version("0.16.1") - id("com.diffplug.spotless") version("6.18.0") + id("dev.clojurephant.clojure") version("0.8.0-beta.7") - id("dev.clojurephant.clojure") version("0.7.0") - id("org.ajoberstar.stutter") version("0.7.1") - id("com.gradle.plugin-publish") version("1.2.0") + id("org.ajoberstar.reckon.settings") version("0.19.1") + id("com.diffplug.spotless") version("7.0.3") + id("org.ajoberstar.stutter") version("1.0.0") + id("com.gradle.plugin-publish") version("1.3.1") } } +plugins { + id("org.ajoberstar.reckon.settings") +} + +extensions.configure { + setDefaultInferredScope("patch") + stages("beta", "rc", "final") + setScopeCalc(calcScopeFromProp().or(calcScopeFromCommitMessages())) + setStageCalc(calcStageFromProp()) +} + dependencyResolutionManagement { repositories { mavenCentral() diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojure.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojure.clj index d3862a3..2135a1a 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojure.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojure.clj @@ -1,10 +1,8 @@ (ns dev.clojurephant.compat-test.basic-clojure - (:require [clojure.set :as set] - [clojure.string :as str] + (:require [clojure.string :as str] [clojure.test :refer :all] [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [org.ajoberstar.cljj.file :as file])) (deftest basic-build (testing "with AOT compile, only class files are copied to the output directory" @@ -38,7 +36,7 @@ (testing "without Clojure on classpath, build fails" (gradle/with-project "BasicClojureProjectTest" (file/write-str (gradle/file "build.gradle") (str/replace (file/read-str (gradle/file "build.gradle")) - #"implementation 'org.clojure:clojure:1.10.3'" + #"implementation 'org.clojure:clojure:1.12.0'" "")) (let [result (gradle/build-and-fail "clean" "check")] (gradle/verify-task-outcome result ":checkClojure" :failed) diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojurescript.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojurescript.clj index d89608b..7283ef0 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojurescript.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/basic_clojurescript.clj @@ -1,8 +1,7 @@ (ns dev.clojurephant.compat-test.basic-clojurescript (:require [clojure.test :refer :all] [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [org.ajoberstar.cljj.file :as file])) (deftest basic-build (testing "simple build" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/clojure_test.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/clojure_test.clj index f2a5d2d..16cdc5f 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/clojure_test.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/clojure_test.clj @@ -1,10 +1,7 @@ (ns dev.clojurephant.compat-test.clojure-test - (:require [clojure.set :as set] - [clojure.string :as str] + (:require [clojure.string :as str] [clojure.test :refer :all] - [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [dev.clojurephant.compat-test.test-kit :as gradle])) (deftest clojure-test-fails (testing "clojure.test failures cause the build to fail" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/ide.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/ide.clj index e946057..5a12471 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/ide.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/ide.clj @@ -1,12 +1,8 @@ (ns dev.clojurephant.compat-test.ide - (:require [clojure.set :as set] - [clojure.string :as str] - [clojure.java.io :as io] + (:require [clojure.java.io :as io] [clojure.data.xml :as xml] [clojure.test :refer :all] - [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [dev.clojurephant.compat-test.test-kit :as gradle])) (defn eclipse-file [& paths] (-> (apply gradle/file paths) diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/incremental_build.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/incremental_build.clj index 5763314..c4d9494 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/incremental_build.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/incremental_build.clj @@ -1,10 +1,7 @@ (ns dev.clojurephant.compat-test.incremental-build - (:require [clojure.set :as set] - [clojure.string :as str] - [clojure.test :refer :all] + (:require [clojure.test :refer :all] [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [org.ajoberstar.cljj.file :as file])) (deftest leaf-with-aot (testing "change in a leaf module" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/java_clojure.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/java_clojure.clj index bf35055..8a7f3e2 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/java_clojure.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/java_clojure.clj @@ -1,10 +1,7 @@ (ns dev.clojurephant.compat-test.java-clojure - (:require [clojure.set :as set] - [clojure.string :as str] + (:require [clojure.string :as str] [clojure.test :refer :all] - [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [dev.clojurephant.compat-test.test-kit :as gradle])) (deftest java-depend-on-clojure (testing "with Java code that depends on Clojure code in different source sets, compilation succeeds" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/multi_project.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/multi_project.clj index b14b4d1..06edb6b 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/multi_project.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/multi_project.clj @@ -1,10 +1,6 @@ (ns dev.clojurephant.compat-test.multi-project - (:require [clojure.set :as set] - [clojure.string :as str] - [clojure.test :refer :all] - [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + (:require [clojure.test :refer :all] + [dev.clojurephant.compat-test.test-kit :as gradle])) (deftest multi-project-classpath (testing "with multi-project and AOT off, project B sources and dependencies are on classpath of A" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/reflection.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/reflection.clj index fbd6dbc..30e7a3f 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/reflection.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/reflection.clj @@ -1,10 +1,8 @@ (ns dev.clojurephant.compat-test.reflection - (:require [clojure.set :as set] - [clojure.string :as str] + (:require [clojure.string :as str] [clojure.test :refer :all] [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [org.ajoberstar.cljj.file :as file])) (deftest reflection-no-output-no-error (gradle/with-project "BasicClojureProjectTest" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj index 9672a38..ff8745e 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/repl.clj @@ -2,7 +2,7 @@ (:require [clojure.edn :as edn] [clojure.test :refer :all] [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file] + [org.ajoberstar.cljj.file :as file] [nrepl.core :as repl]) (:import [dev.clojurephant.compat_test LineProcessingWriter] [java.time LocalDate])) @@ -65,7 +65,7 @@ (deftest cider (testing "CIDER middlewares can be provided" (with-client [client "CiderTest" "--handler=cider.nrepl/cider-nrepl-handler"] - (is (= "0.28.2" (-> (send-repl client {:op "cider-version"}) :cider-version :version-string))) + (is (= "0.55.0" (-> (send-repl client {:op "cider-version"}) :cider-version :version-string))) (is (pr-str 7) (eval-repl client '(do (require 'basic-project.core) (basic-project/use-ns 4))))))) (deftest cider-jack-in diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/source_sets.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/source_sets.clj index 1494656..dc0aba8 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/source_sets.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/source_sets.clj @@ -1,10 +1,7 @@ (ns dev.clojurephant.compat-test.source-sets - (:require [clojure.set :as set] - [clojure.string :as str] + (:require [clojure.string :as str] [clojure.test :refer :all] - [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome])) + [dev.clojurephant.compat-test.test-kit :as gradle])) (deftest multiple-source-sets (testing "with multiple source sets, each gets its own set of tasks to compile the corresponding code" diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/test_kit.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/test_kit.clj index e96e8f3..40b2645 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/test_kit.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/test_kit.clj @@ -2,11 +2,10 @@ (:require [clojure.set :as set] [clojure.string :as str] [clojure.test :refer :all] - [ike.cljj.file :as file] - [ike.cljj.stream]) - (:import [org.gradle.testkit.runner BuildResult BuildTask GradleRunner TaskOutcome] - [java.util.jar JarFile] - [java.nio.file Path])) + [org.ajoberstar.cljj.file :as file] + [org.ajoberstar.cljj.stream]) + (:import [org.gradle.testkit.runner GradleRunner TaskOutcome] + [java.util.jar JarFile])) (defn setup-project [name] (println "*** " name " ***") @@ -66,7 +65,7 @@ (println "***** Args:" args "*****") (-> (GradleRunner/create) (.withProjectDir (-> *project-dir* .toFile)) - (.withArguments (into-array String (conj args "--stacktrace" "--configuration-cache"))) + (.withArguments (into-array String (conj args "--stacktrace"))) (.withPluginClasspath) (.forwardOutput))) diff --git a/src/compatTest/clojure/dev/clojurephant/compat_test/uberjar.clj b/src/compatTest/clojure/dev/clojurephant/compat_test/uberjar.clj index e253598..ad7cbba 100644 --- a/src/compatTest/clojure/dev/clojurephant/compat_test/uberjar.clj +++ b/src/compatTest/clojure/dev/clojurephant/compat_test/uberjar.clj @@ -1,11 +1,8 @@ (ns dev.clojurephant.compat-test.uberjar - (:require [clojure.set :as set] - [clojure.string :as str] + (:require [clojure.string :as str] [clojure.test :refer :all] - [dev.clojurephant.compat-test.test-kit :as gradle] - [ike.cljj.file :as file]) - (:import [org.gradle.testkit.runner TaskOutcome] - [java.time LocalDate])) + [dev.clojurephant.compat-test.test-kit :as gradle]) + (:import [java.time LocalDate])) (deftest uberjar-application (testing "an application uberjar can have its main ns run" diff --git a/src/compatTest/projects/BasicClojureProjectTest/build.gradle b/src/compatTest/projects/BasicClojureProjectTest/build.gradle index 2695172..1eb2ab4 100644 --- a/src/compatTest/projects/BasicClojureProjectTest/build.gradle +++ b/src/compatTest/projects/BasicClojureProjectTest/build.gradle @@ -13,8 +13,8 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + implementation 'org.clojure:clojure:1.12.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' } tasks.withType(Test) { diff --git a/src/compatTest/projects/BasicClojureScriptProjectTest/build.gradle b/src/compatTest/projects/BasicClojureScriptProjectTest/build.gradle index d0972d3..3d59948 100644 --- a/src/compatTest/projects/BasicClojureScriptProjectTest/build.gradle +++ b/src/compatTest/projects/BasicClojureScriptProjectTest/build.gradle @@ -13,9 +13,9 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' - implementation 'org.clojure:clojurescript:1.11.4' - implementation 'org.clojure:java.classpath:1.0.0' + implementation 'org.clojure:clojure:1.12.0' + implementation 'org.clojure:clojurescript:1.11.132' + implementation 'org.clojure:java.classpath:1.1.0' } clojurescript { diff --git a/src/compatTest/projects/CiderTest/build.gradle b/src/compatTest/projects/CiderTest/build.gradle index 6582390..dd6458a 100644 --- a/src/compatTest/projects/CiderTest/build.gradle +++ b/src/compatTest/projects/CiderTest/build.gradle @@ -12,9 +12,9 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' - devImplementation 'cider:cider-nrepl:0.28.2' + implementation 'org.clojure:clojure:1.12.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' + devImplementation 'cider:cider-nrepl:0.55.0' } tasks.withType(Test) { diff --git a/src/compatTest/projects/IncrementalCompilationTest/moduleA/build.gradle b/src/compatTest/projects/IncrementalCompilationTest/moduleA/build.gradle index 072d173..50bb598 100644 --- a/src/compatTest/projects/IncrementalCompilationTest/moduleA/build.gradle +++ b/src/compatTest/projects/IncrementalCompilationTest/moduleA/build.gradle @@ -1,3 +1,3 @@ dependencies { - implementation 'org.clojure:clojure:1.10.3' + implementation 'org.clojure:clojure:1.12.0' } diff --git a/src/compatTest/projects/IncrementalCompilationTest/moduleB/build.gradle b/src/compatTest/projects/IncrementalCompilationTest/moduleB/build.gradle index 7a65c8b..39b501c 100644 --- a/src/compatTest/projects/IncrementalCompilationTest/moduleB/build.gradle +++ b/src/compatTest/projects/IncrementalCompilationTest/moduleB/build.gradle @@ -1,4 +1,4 @@ dependencies { - implementation 'org.clojure:clojure:1.10.3' + implementation 'org.clojure:clojure:1.12.0' implementation project(':moduleA') } diff --git a/src/compatTest/projects/LeinClojureProjectTest/build.gradle b/src/compatTest/projects/LeinClojureProjectTest/build.gradle index b7512d5..48b5d45 100644 --- a/src/compatTest/projects/LeinClojureProjectTest/build.gradle +++ b/src/compatTest/projects/LeinClojureProjectTest/build.gradle @@ -21,8 +21,8 @@ sourceSets { } dependencies { - implementation 'org.clojure:clojure:1.10.3' - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + implementation 'org.clojure:clojure:1.12.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' } tasks.withType(Test) { diff --git a/src/compatTest/projects/MixedClojureJavaTest/build.gradle b/src/compatTest/projects/MixedClojureJavaTest/build.gradle index 568b1af..63e5dbc 100644 --- a/src/compatTest/projects/MixedClojureJavaTest/build.gradle +++ b/src/compatTest/projects/MixedClojureJavaTest/build.gradle @@ -12,7 +12,7 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' + implementation 'org.clojure:clojure:1.12.0' } clojure.builds { diff --git a/src/compatTest/projects/MixedJavaClojureTest/build.gradle b/src/compatTest/projects/MixedJavaClojureTest/build.gradle index 6522a97..80b3606 100644 --- a/src/compatTest/projects/MixedJavaClojureTest/build.gradle +++ b/src/compatTest/projects/MixedJavaClojureTest/build.gradle @@ -12,7 +12,7 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' + implementation 'org.clojure:clojure:1.12.0' } clojure.builds.main.aotAll() diff --git a/src/compatTest/projects/MultiProjectTest/SubClojureA/build.gradle b/src/compatTest/projects/MultiProjectTest/SubClojureA/build.gradle index 4cccabb..22c1a3a 100644 --- a/src/compatTest/projects/MultiProjectTest/SubClojureA/build.gradle +++ b/src/compatTest/projects/MultiProjectTest/SubClojureA/build.gradle @@ -4,6 +4,6 @@ plugins { } dependencies { - api 'org.clojure:clojure:1.10.3' + api 'org.clojure:clojure:1.12.0' api project(':SubClojureB') } diff --git a/src/compatTest/projects/MultiProjectTest/SubClojureB/build.gradle b/src/compatTest/projects/MultiProjectTest/SubClojureB/build.gradle index eeba152..9d94243 100644 --- a/src/compatTest/projects/MultiProjectTest/SubClojureB/build.gradle +++ b/src/compatTest/projects/MultiProjectTest/SubClojureB/build.gradle @@ -4,6 +4,6 @@ plugins { } dependencies { - api 'org.clojure:clojure:1.10.3' - api 'org.clojure:data.json:1.0.0' + api 'org.clojure:clojure:1.12.0' + api 'org.clojure:data.json:2.5.1' } diff --git a/src/compatTest/projects/MultipleSourceSetsTest/build.gradle b/src/compatTest/projects/MultipleSourceSetsTest/build.gradle index 2358243..c8c5b7c 100644 --- a/src/compatTest/projects/MultipleSourceSetsTest/build.gradle +++ b/src/compatTest/projects/MultipleSourceSetsTest/build.gradle @@ -26,10 +26,10 @@ sourceSets { } dependencies { - ss1Implementation 'org.clojure:clojure:1.10.3' - ss2Implementation 'org.clojure:clojure:1.10.3' - testImplementation 'org.clojure:clojure:1.10.3' - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + ss1Implementation 'org.clojure:clojure:1.12.0' + ss2Implementation 'org.clojure:clojure:1.12.0' + testImplementation 'org.clojure:clojure:1.12.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' } tasks.withType(Test) { diff --git a/src/compatTest/projects/TestFailureFailsBuildTest/build.gradle b/src/compatTest/projects/TestFailureFailsBuildTest/build.gradle index 926ce13..f89a6f0 100644 --- a/src/compatTest/projects/TestFailureFailsBuildTest/build.gradle +++ b/src/compatTest/projects/TestFailureFailsBuildTest/build.gradle @@ -12,8 +12,8 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + implementation 'org.clojure:clojure:1.12.0' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' } tasks.withType(Test) { diff --git a/src/compatTest/projects/UberjarTest/build.gradle b/src/compatTest/projects/UberjarTest/build.gradle index 4dddb97..8862274 100644 --- a/src/compatTest/projects/UberjarTest/build.gradle +++ b/src/compatTest/projects/UberjarTest/build.gradle @@ -16,9 +16,9 @@ repositories { } dependencies { - implementation 'org.clojure:clojure:1.10.3' - implementation 'clojure.java-time:clojure.java-time:0.3.2' - testRuntimeOnly 'org.ajoberstar:jovial:0.3.0' + implementation 'org.clojure:clojure:1.12.0' + implementation 'clojure.java-time:clojure.java-time:1.4.3' + testRuntimeOnly 'dev.clojurephant:jovial:0.4.2' } tasks.withType(Test) { diff --git a/src/main/java/dev/clojurephant/plugin/clojure/ClojureBuild.java b/src/main/java/dev/clojurephant/plugin/clojure/ClojureBuild.java index a0dfd9d..f9cb7d8 100644 --- a/src/main/java/dev/clojurephant/plugin/clojure/ClojureBuild.java +++ b/src/main/java/dev/clojurephant/plugin/clojure/ClojureBuild.java @@ -14,7 +14,6 @@ import org.gradle.api.provider.Provider; import org.gradle.api.provider.SetProperty; import org.gradle.api.tasks.Nested; -import org.gradle.internal.classpath.Instrumented; public abstract class ClojureBuild implements Named { public abstract DirectoryProperty getOutputDir(); @@ -28,8 +27,6 @@ public FileTree getSourceTree() { } Provider> getAllNamespaces() { - // Using internal API due to https://github.com/gradle/gradle/issues/20265 - Instrumented.fileCollectionObserved(getSourceTree(), "Clojurephant"); return Namespaces.findNamespaces(getSourceTree()); } diff --git a/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java b/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java index 7b6c61a..b6c388f 100644 --- a/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java +++ b/src/main/java/dev/clojurephant/plugin/common/internal/ClojureCommonPlugin.java @@ -12,7 +12,6 @@ import org.gradle.api.JavaVersion; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.artifacts.ComponentModuleMetadataDetails; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.component.ComponentIdentifier; import org.gradle.api.artifacts.dsl.DependencyHandler; @@ -101,8 +100,7 @@ private void configureDev(Project project, SourceSetContainer sourceSets) { } private void configureDependencyConstraints(DependencyHandler dependencies) { - dependencies.getModules().module("org.clojure:tools.nrepl", module -> { - ComponentModuleMetadataDetails details = (ComponentModuleMetadataDetails) module; + dependencies.getModules().module("org.clojure:tools.nrepl", details -> { details.replacedBy("nrepl:nrepl", "nREPL was moved out of Clojure Contrib to its own project."); }); @@ -129,6 +127,7 @@ private Provider enrichClasspath(Project project, Configuration .map(result -> result.getSelected().getId()) .collect(Collectors.toSet()); + @SuppressWarnings("unchecked") ArtifactResolutionResult result = project.getDependencies().createArtifactResolutionQuery() .forComponents(componentIds) .withArtifacts(JvmLibrary.class, SourcesArtifact.class, JavadocArtifact.class) diff --git a/src/main/java/dev/clojurephant/plugin/common/internal/PreplClient.java b/src/main/java/dev/clojurephant/plugin/common/internal/PreplClient.java index 06dd00c..d3fe929 100644 --- a/src/main/java/dev/clojurephant/plugin/common/internal/PreplClient.java +++ b/src/main/java/dev/clojurephant/plugin/common/internal/PreplClient.java @@ -75,7 +75,7 @@ void start() { evalEdn("(do (require 'dev.clojurephant.prepl) (deliver dev.clojurephant.prepl/connected true))"); started = true; break; - } catch (ClojureException e) { + } catch (ClojureException | ClassCastException e) { // retry } } diff --git a/stutter.lockfile b/stutter.lockfile index bb10621..2b50511 100644 --- a/stutter.lockfile +++ b/stutter.lockfile @@ -1,4 +1,3 @@ # DO NOT MODIFY: Generated by Stutter plugin. -java11=6.4.1,6.9.4,7.0.2,7.6.1,8.0.2,8.1 -java17=7.3.3,7.6.1,8.0.2,8.1 -java8=6.4.1,6.9.4,7.0.2,7.6.1,8.0.2,8.1 +java21=8.6,8.13,8.14-rc-2,9.0-milestone-2 +java8=8.0.2,8.13,8.14-rc-2,9.0-milestone-2