From 396a3d7b37189f1a3d1af841fba907b21dab5bf5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 06:49:10 +0000 Subject: [PATCH 01/12] Add renovate.json --- renovate.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..39a2b6e --- /dev/null +++ b/renovate.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base" + ] +} From 6c1df21bafd971ba6ad571a68303c68a8018be67 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 08:37:19 +0000 Subject: [PATCH 02/12] Update actions/checkout action to v3 --- .github/workflows/gradle-wrapper-validation.yml | 2 +- .github/workflows/pre-merge.yaml | 2 +- .github/workflows/publish-plugin.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml index fb5d0bb..7f5198d 100644 --- a/.github/workflows/gradle-wrapper-validation.yml +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout latest code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Validate Gradle Wrapper uses: gradle/wrapper-validation-action@v1 diff --git a/.github/workflows/pre-merge.yaml b/.github/workflows/pre-merge.yaml index fa82683..d205ce2 100644 --- a/.github/workflows/pre-merge.yaml +++ b/.github/workflows/pre-merge.yaml @@ -20,7 +20,7 @@ jobs: if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache Gradle Caches uses: actions/cache@v1 with: diff --git a/.github/workflows/publish-plugin.yaml b/.github/workflows/publish-plugin.yaml index b290068..fca3aec 100644 --- a/.github/workflows/publish-plugin.yaml +++ b/.github/workflows/publish-plugin.yaml @@ -14,7 +14,7 @@ jobs: if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Cache Gradle Caches uses: actions/cache@v1 with: From 6cecba2e7bccedd87c0b3c9facfbbe72f66d4f27 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 08:37:13 +0000 Subject: [PATCH 03/12] Update actions/cache action to v3 --- .github/workflows/pre-merge.yaml | 4 ++-- .github/workflows/publish-plugin.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pre-merge.yaml b/.github/workflows/pre-merge.yaml index d205ce2..68ad719 100644 --- a/.github/workflows/pre-merge.yaml +++ b/.github/workflows/pre-merge.yaml @@ -22,12 +22,12 @@ jobs: - name: Checkout Repo uses: actions/checkout@v3 - name: Cache Gradle Caches - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/.gradle/caches/ key: cache-gradle-cache - name: Cache Gradle Wrapper - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/.gradle/wrapper/ key: cache-gradle-wrapper diff --git a/.github/workflows/publish-plugin.yaml b/.github/workflows/publish-plugin.yaml index fca3aec..ef8cc63 100644 --- a/.github/workflows/publish-plugin.yaml +++ b/.github/workflows/publish-plugin.yaml @@ -16,12 +16,12 @@ jobs: - name: Checkout Repo uses: actions/checkout@v3 - name: Cache Gradle Caches - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/.gradle/caches/ key: cache-gradle-cache - name: Cache Gradle Wrapper - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ~/.gradle/wrapper/ key: cache-gradle-wrapper From a8d1c6abe0bbd3252c5f26fc6f2507a60a4ae107 Mon Sep 17 00:00:00 2001 From: Goooler Date: Wed, 15 Mar 2023 16:52:52 +0800 Subject: [PATCH 04/12] Add a badge link to plugin portal https://img.shields.io/gradle-plugin-portal/v/io.github.chao2zhang.xuke --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 90dd9e4..96db492 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Xuke +[![Download](https://img.shields.io/gradle-plugin-portal/v/io.github.chao2zhang.xuke)](https://plugins.gradle.org/plugin/io.github.chao2zhang.xuke) [![Pre Merge Checks](https://github.com/cortinico/kotlin-gradle-plugin-template/workflows/Pre%20Merge%20Checks/badge.svg)](https://github.com/cortinico/kotlin-gradle-plugin-template/actions?query=workflow%3A%22Pre+Merge+Checks%22) [![License](https://img.shields.io/github/license/cortinico/kotlin-android-template.svg)](LICENSE) ![Language](https://img.shields.io/github/languages/top/cortinico/kotlin-android-template?color=blue&logo=kotlin) From f655ada6f2866689fe1061ec84370c5a7a9d2b90 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 08:53:13 +0000 Subject: [PATCH 05/12] Update Kotlin to v1.8.10 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Goooler --- buildSrc/src/main/java/Dependencies.kt | 2 +- example-jvm/build.gradle.kts | 2 +- plugin-build/buildSrc/src/main/java/Dependencies.kt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index a892b48..17c24e2 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -3,7 +3,7 @@ object Versions { } object BuildPluginsVersion { - const val KOTLIN = "1.5.31" + const val KOTLIN = "1.8.10" const val KTLINT = "10.0.0" } diff --git a/example-jvm/build.gradle.kts b/example-jvm/build.gradle.kts index b172332..1c3e379 100644 --- a/example-jvm/build.gradle.kts +++ b/example-jvm/build.gradle.kts @@ -2,7 +2,7 @@ import io.github.chao2zhang.XukeExtension import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - kotlin("jvm") version "1.5.31" + kotlin("jvm") version "1.8.10" id("io.github.chao2zhang.xuke") } diff --git a/plugin-build/buildSrc/src/main/java/Dependencies.kt b/plugin-build/buildSrc/src/main/java/Dependencies.kt index dbc5670..a39273e 100644 --- a/plugin-build/buildSrc/src/main/java/Dependencies.kt +++ b/plugin-build/buildSrc/src/main/java/Dependencies.kt @@ -3,11 +3,11 @@ object Versions { } object BuildPluginsVersion { - const val KOTLIN = "1.5.31" + const val KOTLIN = "1.8.10" const val KTLINT = "10.0.0" const val PLUGIN_PUBLISH = "0.14.0" } object TestingLib { const val JUNIT = "junit:junit:${Versions.JUNIT}" -} \ No newline at end of file +} From 089cbbfad08edd3b0abedc9bf68e5d40978ca421 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 09:01:20 +0000 Subject: [PATCH 06/12] Update dependency gradle to v7.6.1 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- gradle/wrapper/gradle-wrapper.properties | 2 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 59821 -> 61574 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 ++- plugin-build/gradlew | 18 ++++++++++++++---- plugin-build/gradlew.bat | 15 +++++++++------ 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b1159fc..31cca49 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugin-build/gradle/wrapper/gradle-wrapper.jar b/plugin-build/gradle/wrapper/gradle-wrapper.jar index 41d9927a4d4fb3f96a785543079b8df6723c946b..943f0cbfa754578e88a3dae77fce6e3dea56edbf 100644 GIT binary patch delta 36987 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 z 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 VBfu2+*qg&~f-ihLS3eum{s(|${^$Sz diff --git a/plugin-build/gradle/wrapper/gradle-wrapper.properties b/plugin-build/gradle/wrapper/gradle-wrapper.properties index b1159fc..e8be595 100644 --- a/plugin-build/gradle/wrapper/gradle-wrapper.properties +++ b/plugin-build/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugin-build/gradlew b/plugin-build/gradlew index 1b6c787..65dcd68 100755 --- a/plugin-build/gradlew +++ b/plugin-build/gradlew @@ -55,7 +55,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/subprojects/plugins/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,10 +80,10 @@ 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##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' @@ -143,12 +143,16 @@ fi 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=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=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -205,6 +209,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/plugin-build/gradlew.bat b/plugin-build/gradlew.bat index ac1b06f..6689b85 100644 --- a/plugin-build/gradlew.bat +++ b/plugin-build/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From aca200bc13e3734259042f91fa710cee4ec69014 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 17:43:22 +0800 Subject: [PATCH 07/12] Gradle 8 * Update dependency gradle to v8 * Just bin * Ktlint 11.3.1 * Update com.gradle.plugin-publish 1.1.0 * Ignore files * No need stdlibs * compileOnly gradleApi * Fix style * Set toolchain for sample * Merge redundant ignore files --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Goooler --- .gitignore | 11 +- .idea/.gitignore | 3 - .idea/compiler.xml | 10 -- .idea/gradle.xml | 34 ----- .idea/jarRepositories.xml | 25 ---- .idea/misc.xml | 5 - .idea/uiDesigner.xml | 124 ------------------ .idea/vcs.xml | 6 - buildSrc/.gitignore | 1 - buildSrc/src/main/java/Dependencies.kt | 2 +- example-jvm/.gitignore | 1 - example-jvm/build.gradle.kts | 18 +-- gradle/wrapper/gradle-wrapper.properties | 2 +- plugin-build/.gitignore | 1 - plugin-build/buildSrc/.gitignore | 1 - .../buildSrc/src/main/java/Dependencies.kt | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- plugin-build/plugin/.gitignore | 1 - plugin-build/plugin/build.gradle.kts | 32 ++--- .../java/io/github/chao2zhang/XukeTask.kt | 2 +- 20 files changed, 26 insertions(+), 259 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/jarRepositories.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/uiDesigner.xml delete mode 100644 .idea/vcs.xml delete mode 100644 buildSrc/.gitignore delete mode 100644 example-jvm/.gitignore delete mode 100644 plugin-build/.gitignore delete mode 100644 plugin-build/buildSrc/.gitignore delete mode 100644 plugin-build/plugin/.gitignore diff --git a/.gitignore b/.gitignore index cf801b7..cf10d2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,5 @@ *.iml .gradle -/local.properties -/.idea/caches -/.idea/libraries -/.idea/modules.xml -/.idea/workspace.xml -/.idea/navEditor.xml -/.idea/assetWizardSettings.xml +.idea .DS_Store -/build -**/build \ No newline at end of file +build diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 758f153..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index e11474c..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index d2ce72d..0000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index e9a6d52..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index e96534f..0000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/buildSrc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 17c24e2..a355000 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -4,7 +4,7 @@ object Versions { object BuildPluginsVersion { const val KOTLIN = "1.8.10" - const val KTLINT = "10.0.0" + const val KTLINT = "11.3.1" } object TestingLib { diff --git a/example-jvm/.gitignore b/example-jvm/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/example-jvm/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/example-jvm/build.gradle.kts b/example-jvm/build.gradle.kts index 1c3e379..7d3b7ed 100644 --- a/example-jvm/build.gradle.kts +++ b/example-jvm/build.gradle.kts @@ -1,5 +1,4 @@ import io.github.chao2zhang.XukeExtension -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { kotlin("jvm") version "1.8.10" @@ -16,19 +15,14 @@ sourceSets { } } -dependencies { - implementation(kotlin("stdlib")) -} - -val compileKotlin: KotlinCompile by tasks -compileKotlin.kotlinOptions { - jvmTarget = "1.8" +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(8)) + } } -compileKotlin.dependsOn(tasks.xuke) -val compileTestKotlin: KotlinCompile by tasks -compileTestKotlin.kotlinOptions { - jvmTarget = "1.8" +tasks.compileKotlin.configure { + dependsOn(tasks.xuke) } configure { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 31cca49..e1bef7e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugin-build/.gitignore b/plugin-build/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/plugin-build/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/plugin-build/buildSrc/.gitignore b/plugin-build/buildSrc/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/plugin-build/buildSrc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/plugin-build/buildSrc/src/main/java/Dependencies.kt b/plugin-build/buildSrc/src/main/java/Dependencies.kt index a39273e..5468d30 100644 --- a/plugin-build/buildSrc/src/main/java/Dependencies.kt +++ b/plugin-build/buildSrc/src/main/java/Dependencies.kt @@ -4,8 +4,8 @@ object Versions { object BuildPluginsVersion { const val KOTLIN = "1.8.10" - const val KTLINT = "10.0.0" - const val PLUGIN_PUBLISH = "0.14.0" + const val KTLINT = "11.3.1" + const val PLUGIN_PUBLISH = "1.1.0" } object TestingLib { diff --git a/plugin-build/gradle/wrapper/gradle-wrapper.properties b/plugin-build/gradle/wrapper/gradle-wrapper.properties index e8be595..bdc9a83 100644 --- a/plugin-build/gradle/wrapper/gradle-wrapper.properties +++ b/plugin-build/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugin-build/plugin/.gitignore b/plugin-build/plugin/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/plugin-build/plugin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/plugin-build/plugin/build.gradle.kts b/plugin-build/plugin/build.gradle.kts index b0db455..81d0016 100644 --- a/plugin-build/plugin/build.gradle.kts +++ b/plugin-build/plugin/build.gradle.kts @@ -5,44 +5,36 @@ plugins { } dependencies { - implementation(kotlin("stdlib-jdk7")) - implementation(gradleApi()) + compileOnly(gradleApi()) testImplementation(TestingLib.JUNIT) } java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + toolchain { + languageVersion.set(JavaLanguageVersion.of(8)) + } } +group = PluginCoordinates.GROUP +version = PluginCoordinates.VERSION + gradlePlugin { + website.set(PluginBundle.WEBSITE) + vcsUrl.set(PluginBundle.VCS) + plugins { create(PluginCoordinates.ID) { id = PluginCoordinates.ID implementationClass = PluginCoordinates.IMPLEMENTATION_CLASS + description = PluginBundle.DESCRIPTION version = PluginCoordinates.VERSION + tags.set(PluginBundle.TAGS) } - } -} - -pluginBundle { - website = PluginBundle.WEBSITE - vcsUrl = PluginBundle.VCS - description = PluginBundle.DESCRIPTION - tags = PluginBundle.TAGS - - plugins { getByName(PluginCoordinates.ID) { displayName = PluginBundle.DISPLAY_NAME } } - - mavenCoordinates { - groupId = PluginCoordinates.GROUP - artifactId = PluginCoordinates.ID - version = PluginCoordinates.VERSION - } } tasks.create("setupPluginUploadFromEnvironment") { diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt index fbc963e..cd296ec 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt @@ -107,7 +107,7 @@ abstract class XukeTask : DefaultTask() { name = licenseNode.namedChildTextContentOrEmpty("name"), url = licenseNode.namedChildTextContentOrEmpty("url"), distribution = licenseNode.namedChildTextContentOrEmpty("distribution"), - comments = licenseNode.namedChildTextContentOrEmpty("comments"), + comments = licenseNode.namedChildTextContentOrEmpty("comments") ) ) } From c3e4805a6d9cb801547b20b2c154357fd143b274 Mon Sep 17 00:00:00 2001 From: Goooler Date: Wed, 15 Mar 2023 17:43:00 +0800 Subject: [PATCH 08/12] Polish GHA configs --- .github/workflows/gradle-wrapper-validation.yml | 8 +++----- .github/workflows/pre-merge.yaml | 16 +++------------- .github/workflows/publish-plugin.yaml | 14 ++------------ 3 files changed, 8 insertions(+), 30 deletions(-) diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml index 7f5198d..d59471e 100644 --- a/.github/workflows/gradle-wrapper-validation.yml +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -1,4 +1,5 @@ name: Validate Gradle Wrapper + on: push: branches: @@ -12,8 +13,5 @@ jobs: name: Validation runs-on: ubuntu-latest steps: - - name: Checkout latest code - uses: actions/checkout@v3 - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 - + - uses: actions/checkout@v3 + - uses: gradle/wrapper-validation-action@v1 diff --git a/.github/workflows/pre-merge.yaml b/.github/workflows/pre-merge.yaml index 68ad719..b9ebfb1 100644 --- a/.github/workflows/pre-merge.yaml +++ b/.github/workflows/pre-merge.yaml @@ -12,25 +12,15 @@ jobs: gradle: strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.os }} env: GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Cache Gradle Caches - uses: actions/cache@v3 - with: - path: ~/.gradle/caches/ - key: cache-gradle-cache - - name: Cache Gradle Wrapper - uses: actions/cache@v3 - with: - path: ~/.gradle/wrapper/ - key: cache-gradle-wrapper + - uses: actions/checkout@v3 + - uses: gradle/gradle-build-action@v2 - name: Run Gradle tasks run: ./gradlew preMerge --continue - name: Stop Gradle diff --git a/.github/workflows/publish-plugin.yaml b/.github/workflows/publish-plugin.yaml index ef8cc63..3379482 100644 --- a/.github/workflows/publish-plugin.yaml +++ b/.github/workflows/publish-plugin.yaml @@ -13,18 +13,8 @@ jobs: GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} steps: - - name: Checkout Repo - uses: actions/checkout@v3 - - name: Cache Gradle Caches - uses: actions/cache@v3 - with: - path: ~/.gradle/caches/ - key: cache-gradle-cache - - name: Cache Gradle Wrapper - uses: actions/cache@v3 - with: - path: ~/.gradle/wrapper/ - key: cache-gradle-wrapper + - uses: actions/checkout@v3 + - uses: gradle/gradle-build-action@v2 - name: Run Gradle tasks run: ./gradlew preMerge --continue - name: Publish on Plugin Portal From d4e99983ad80ad2183db06f353b602a7d19bd676 Mon Sep 17 00:00:00 2001 From: Goooler Date: Wed, 15 Mar 2023 18:31:29 +0800 Subject: [PATCH 09/12] Modernize build * Add .gitattributes * Add .editorconfig * Migrate to version catalog * Kill buildSrc * Defer create * Use pluginId * No extra config for ktlint * Remove redundant repo * Tweak flags * Enable build scan * Inline more plugins --- .editorconfig | 19 +++++++++ .gitattributes | 4 ++ build.gradle.kts | 15 +------ buildSrc/build.gradle.kts | 7 ---- buildSrc/src/main/java/Dependencies.kt | 12 ------ example-jvm/build.gradle.kts | 4 -- gradle.properties | 5 +-- gradle/libs.versions.toml | 11 +++++ plugin-build/build.gradle.kts | 37 ++--------------- plugin-build/buildSrc/build.gradle.kts | 6 --- .../buildSrc/src/main/java/Coordinates.kt | 19 --------- .../buildSrc/src/main/java/Dependencies.kt | 13 ------ plugin-build/plugin/build.gradle.kts | 40 +++++++++++-------- plugin-build/settings.gradle.kts | 13 ++++++ settings.gradle.kts | 19 +++++++++ 15 files changed, 96 insertions(+), 128 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitattributes delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/java/Dependencies.kt create mode 100644 gradle/libs.versions.toml delete mode 100644 plugin-build/buildSrc/build.gradle.kts delete mode 100644 plugin-build/buildSrc/src/main/java/Coordinates.kt delete mode 100644 plugin-build/buildSrc/src/main/java/Dependencies.kt diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c0a5c71 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +charset = utf-8 +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{kt,kts}] +ij_kotlin_imports_layout = * +ij_kotlin_allow_trailing_comma = true +ij_kotlin_allow_trailing_comma_on_call_site = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..411c077 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +* text=auto eol=lf + +*.bat text eol=crlf +*.jar binary diff --git a/build.gradle.kts b/build.gradle.kts index 7a9754d..0cf4587 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,17 +1,6 @@ plugins { - kotlin("jvm") version BuildPluginsVersion.KOTLIN apply false - id("org.jlleitschuh.gradle.ktlint") version BuildPluginsVersion.KTLINT -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -tasks.register("clean", Delete::class.java) { - delete(rootProject.buildDir) + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.ktlint) } tasks.register("reformatAll") { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index cff9fbd..0000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - `kotlin-dsl` -} -repositories { - google() - mavenCentral() -} \ No newline at end of file diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt deleted file mode 100644 index a355000..0000000 --- a/buildSrc/src/main/java/Dependencies.kt +++ /dev/null @@ -1,12 +0,0 @@ -object Versions { - const val JUNIT = "4.13.2" -} - -object BuildPluginsVersion { - const val KOTLIN = "1.8.10" - const val KTLINT = "11.3.1" -} - -object TestingLib { - const val JUNIT = "junit:junit:${Versions.JUNIT}" -} diff --git a/example-jvm/build.gradle.kts b/example-jvm/build.gradle.kts index 7d3b7ed..a6f8f0d 100644 --- a/example-jvm/build.gradle.kts +++ b/example-jvm/build.gradle.kts @@ -5,10 +5,6 @@ plugins { id("io.github.chao2zhang.xuke") } -repositories { - mavenCentral() -} - sourceSets { main { java.srcDir("build/generated") diff --git a/gradle.properties b/gradle.properties index 9259715..5b4e3da 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,4 @@ -org.gradle.jvmargs=-Xmx1536m org.gradle.parallel=true - -# Kotlin code style for this project: "official" or "obsolete": +org.gradle.caching=true +org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8 kotlin.code.style=official diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..282d926 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,11 @@ +[versions] +kotlin = "1.8.10" + +[plugins] +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +detekt = "io.gitlab.arturbosch.detekt:1.22.0" +ktlint = "org.jlleitschuh.gradle.ktlint:11.3.1" +pluginPublish = "com.gradle.plugin-publish:1.1.0" + +[libraries] +junit4 = "junit:junit:4.13.2" diff --git a/plugin-build/build.gradle.kts b/plugin-build/build.gradle.kts index 950a7f9..c97da11 100644 --- a/plugin-build/build.gradle.kts +++ b/plugin-build/build.gradle.kts @@ -1,36 +1,5 @@ plugins { - kotlin("jvm") version BuildPluginsVersion.KOTLIN apply false - id("com.gradle.plugin-publish") version BuildPluginsVersion.PLUGIN_PUBLISH apply false - id("org.jlleitschuh.gradle.ktlint") version BuildPluginsVersion.KTLINT -} - -allprojects { - group = PluginCoordinates.GROUP - version = PluginCoordinates.VERSION - - repositories { - google() - mavenCentral() - } - - apply { - plugin("org.jlleitschuh.gradle.ktlint") - } - - ktlint { - debug.set(false) - verbose.set(true) - android.set(false) - outputToConsole.set(true) - ignoreFailures.set(false) - enableExperimentalRules.set(true) - filter { - exclude("**/generated/**") - include("**/kotlin/**") - } - } -} - -tasks.register("clean", Delete::class.java) { - delete(rootProject.buildDir) + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.ktlint) + alias(libs.plugins.pluginPublish) } diff --git a/plugin-build/buildSrc/build.gradle.kts b/plugin-build/buildSrc/build.gradle.kts deleted file mode 100644 index 88cd14f..0000000 --- a/plugin-build/buildSrc/build.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -plugins { - `kotlin-dsl` -} -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/plugin-build/buildSrc/src/main/java/Coordinates.kt b/plugin-build/buildSrc/src/main/java/Coordinates.kt deleted file mode 100644 index 9105f71..0000000 --- a/plugin-build/buildSrc/src/main/java/Coordinates.kt +++ /dev/null @@ -1,19 +0,0 @@ -object PluginCoordinates { - const val ID = "io.github.chao2zhang.xuke" - const val GROUP = "io.github.chao2zhang" - const val VERSION = "0.0.11" - const val IMPLEMENTATION_CLASS = "io.github.chao2zhang.XukePlugin" -} - -object PluginBundle { - const val VCS = "https://github.com/chao2zhang/Xuke" - const val WEBSITE = "https://github.com/chao2zhang/Xuke" - const val DESCRIPTION = "A Gradle plugin to collect software licenses from dependencies" - const val DISPLAY_NAME = "A Gradle plugin to collect software licenses from dependencies" - val TAGS = listOf( - "plugin", - "gradle", - "license", - "oss", - ) -} diff --git a/plugin-build/buildSrc/src/main/java/Dependencies.kt b/plugin-build/buildSrc/src/main/java/Dependencies.kt deleted file mode 100644 index 5468d30..0000000 --- a/plugin-build/buildSrc/src/main/java/Dependencies.kt +++ /dev/null @@ -1,13 +0,0 @@ -object Versions { - const val JUNIT = "4.13.2" -} - -object BuildPluginsVersion { - const val KOTLIN = "1.8.10" - const val KTLINT = "11.3.1" - const val PLUGIN_PUBLISH = "1.1.0" -} - -object TestingLib { - const val JUNIT = "junit:junit:${Versions.JUNIT}" -} diff --git a/plugin-build/plugin/build.gradle.kts b/plugin-build/plugin/build.gradle.kts index 81d0016..71e79c6 100644 --- a/plugin-build/plugin/build.gradle.kts +++ b/plugin-build/plugin/build.gradle.kts @@ -1,13 +1,13 @@ plugins { kotlin("jvm") - id("java-gradle-plugin") - id("com.gradle.plugin-publish") + `java-gradle-plugin` + alias(libs.plugins.pluginPublish) } dependencies { compileOnly(gradleApi()) - testImplementation(TestingLib.JUNIT) + testImplementation(libs.junit4) } java { @@ -16,28 +16,34 @@ java { } } -group = PluginCoordinates.GROUP -version = PluginCoordinates.VERSION +group = "io.github.chao2zhang" +version = "0.0.11" + +val pluginId = "io.github.chao2zhang.xuke" gradlePlugin { - website.set(PluginBundle.WEBSITE) - vcsUrl.set(PluginBundle.VCS) + website.set("https://github.com/chao2zhang/Xuke") + vcsUrl.set("https://github.com/chao2zhang/Xuke") plugins { - create(PluginCoordinates.ID) { - id = PluginCoordinates.ID - implementationClass = PluginCoordinates.IMPLEMENTATION_CLASS - description = PluginBundle.DESCRIPTION - version = PluginCoordinates.VERSION - tags.set(PluginBundle.TAGS) - } - getByName(PluginCoordinates.ID) { - displayName = PluginBundle.DISPLAY_NAME + create(pluginId) { + id = pluginId + implementationClass = "io.github.chao2zhang.XukePlugin" + displayName = "A Gradle plugin to collect software licenses from dependencies" + description = "A Gradle plugin to collect software licenses from dependencies" + tags.set( + listOf( + "plugin", + "gradle", + "license", + "oss", + ), + ) } } } -tasks.create("setupPluginUploadFromEnvironment") { +tasks.register("setupPluginUploadFromEnvironment") { doLast { val key = System.getenv("GRADLE_PUBLISH_KEY") val secret = System.getenv("GRADLE_PUBLISH_SECRET") diff --git a/plugin-build/settings.gradle.kts b/plugin-build/settings.gradle.kts index 232326d..e753cf7 100644 --- a/plugin-build/settings.gradle.kts +++ b/plugin-build/settings.gradle.kts @@ -5,6 +5,19 @@ pluginManagement { } } +dependencyResolutionManagement { + repositories { + mavenCentral() + google() + } + + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + rootProject.name = ("xuke-plugin") include(":plugin") diff --git a/settings.gradle.kts b/settings.gradle.kts index 069fbbc..08568e2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,6 +5,25 @@ pluginManagement { } } +dependencyResolutionManagement { + repositories { + mavenCentral() + google() + } +} + +plugins { + id("com.gradle.enterprise") version "3.12.4" +} + +gradleEnterprise { + buildScan { + termsOfServiceUrl = "https://gradle.com/terms-of-service" + termsOfServiceAgree = "yes" + publishAlways() + } +} + rootProject.name = ("xuke") include(":example-jvm") From fef1f44395a26d51fb1f969e55120e6a4438f335 Mon Sep 17 00:00:00 2001 From: Goooler Date: Wed, 15 Mar 2023 19:55:01 +0800 Subject: [PATCH 10/12] Generate wrappers --- gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 61608 bytes gradle/wrapper/gradle-wrapper.properties | 1 + gradlew | 269 +++++++++++------- gradlew.bat | 181 ++++++------ .../gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 61608 bytes plugin-build/gradlew | 4 +- plugin-build/gradlew.bat | 184 ++++++------ 7 files changed, 351 insertions(+), 288 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..ccebba7710deaf9f98673a68957ea02138b60d0a 100644 GIT binary patch delta 42019 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 delta 39521 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 R149saZvb8 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + 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. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +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=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=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# 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. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index ac1b06f..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,89 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "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. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -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. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +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% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +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. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +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. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/plugin-build/gradle/wrapper/gradle-wrapper.jar b/plugin-build/gradle/wrapper/gradle-wrapper.jar index 943f0cbfa754578e88a3dae77fce6e3dea56edbf..ccebba7710deaf9f98673a68957ea02138b60d0a 100644 GIT binary patch delta 5094 zcmZu#c|6qH|DG9RA4`noBZNWrC2N)tSqjO%%aX0^O4dPAB*iC6_9R<`apl^#h-_oY z)(k_0v8Fxp{fyi9-uwN%e)GpU&v~BrS>~KG^PF=MNmQjIDr&QHR7f-kM{%U_u*1=5 zGC}ae5(^Rrg9QY8$x^}oiJ0d2O9YW{J~$dD1ovlvh&0B4L)!4S=z;Hac>K{#9q9cKq;>>BtKo1!+gw`yqE zSK8x^jC|B!qmSW#uyb@T^CkB9qRd{N3V-rEi}AEgoU_J27lw_0X`}c0&m9JhxM;RK z54_gdZ(u?R5`B3}NeVal2NTHqlktM`2eTF28%6BZCWW$-shf0l-BOVSm)hU58MTPy zDcY-5777j;ccU!Yba8wH=X6OdPJ8O5Kp^3gUNo>!b=xb6T2F&LiC2eBJj8KuLPW!4 zw3V^NnAKZm^D?tmliCvzi>UtoDH%V#%SM0d*NS+m%4}qO<)M1E{OpQ(v&ZNc`vdi| zEGlVi$Dgxy1p6+k0qGLQt(JwxZxLCZ4>wJ=sb0v%Ki?*+!ic_2exumn{%Co|| z-axdK#RUC;P|vqbe?L`K!j;sUo=uuR_#ZkRvBf%Txo6{OL&I(?dz?47Z(DcX3KTw> zGY%A=kX;fBkq$F^sX|-)1Qkg##+n-Ci{qJVPj@P?l_1Y`nD^v>fZ3HMX%(4p-TlD(>yWwJij!6Jw}l7h>CIm@Ou5B@$Wy`Ky*814%Mdi1GfG1zDG9NogaoVHHr4gannv4?w6g&10!j=lKM zFW;@=Z0}vAPAxA=R4)|`J??*$|Fh`5=ks*V7TapX`+=4n*{aXxRhh-EGX_Xrzjb4r zn0vO7Cc~wtyeM_8{**~9y7>+}1JV8Buhg%*hy|PUc#!vw#W(HFTL|BpM)U0>JxG6S zLnqn1!0++RyyJ>5VU<4mDv8>Q#{EtgS3mj7Hx}Zkr0tz1}h8Kn6q`MiwC z{Y#;D!-ndlImST(C@(*i5f0U(jD29G7g#nkiPX zki6M$QYX_fNH=E4_eg9*FFZ3wF9YAKC}CP89Kl(GNS(Ag994)0$OL4-fj_1EdR}ARB#-vP_$bWF`Qk58+ z4Jq*-YkcmCuo9U%oxGeYe7Be=?n}pX+x>ob(8oPLDUPiIryT8v*N4@0{s_VYALi;lzj19ivLJKaXt7~UfU|mu9zjbhPnIhG2`uI34urWWA9IO{ z_1zJ)lwSs{qt3*UnD}3qB^kcRZ?``>IDn>qp8L96bRaZH)Zl`!neewt(wjSk1i#zf zb8_{x_{WRBm9+0CF4+nE)NRe6K8d|wOWN)&-3jCDiK5mj>77=s+TonlH5j`nb@rB5 z5NX?Z1dk`E#$BF{`(D>zISrMo4&}^wmUIyYL-$PWmEEfEn-U0tx_vy$H6|+ zi{ytv2@JXBsot|%I5s74>W1K{-cvj0BYdNiRJz*&jrV9>ZXYZhEMULcM=fCmxkN&l zEoi=)b)Vazc5TQC&Q$oEZETy@!`Gnj`qoXl7mcwdY@3a-!SpS2Mau|uK#++@>H8QC zr2ld8;<_8We%@E?S=E?=e9c$BL^9X?bj*4W;<+B&OOe+3{<`6~*fC(=`TO>o^A(Y! zA`Qc1ky?*6xjVfR?ugE~oY`Gtzhw^{Z@E6vZ`mMRAp>Odpa!m zzWmtjT|Lj^qiZMfj%%un-o$Eu>*v12qF{$kCKai^?DF=$^tfyV%m9;W@pm-BZn_6b z{jsXY3!U`%9hzk6n7YyHY%48NhjI6jjuUn?Xfxe0`ARD_Q+T_QBZ{ zUK@!63_Wr`%9q_rh`N4=J=m;v>T{Y=ZLKN^m?(KZQ2J%|3`hV0iogMHJ} zY6&-nXirq$Yhh*CHY&Qf*b@@>LPTMf z(cMorwW?M11RN{H#~ApKT)F!;R#fBHahZGhmy>Sox`rk>>q&Y)RG$-QwH$_TWk^hS zTq2TC+D-cB21|$g4D=@T`-ATtJ?C=aXS4Q}^`~XjiIRszCB^cvW0OHe5;e~9D%D10 zl4yP4O=s-~HbL7*4>#W52eiG7*^Hi)?@-#*7C^X5@kGwK+paI>_a2qxtW zU=xV7>QQROWQqVfPcJ$4GSx`Y23Z&qnS?N;%mjHL*EVg3pBT{V7bQUI60jtBTS?i~ zycZ4xqJ<*3FSC6_^*6f)N|sgB5Bep(^%)$=0cczl>j&n~KR!7WC|3;Zoh_^GuOzRP zo2Hxf50w9?_4Qe368fZ0=J|fR*jO_EwFB1I^g~i)roB|KWKf49-)!N%Ggb%w=kB8)(+_%kE~G!(73aF=yCmM3Cfb9lV$G!b zoDIxqY{dH>`SILGHEJwq%rwh46_i`wkZS-NY95qdNE)O*y^+k#JlTEij8NT(Y_J!W zFd+YFoZB|auOz~A@A{V*c)o7E(a=wHvb@8g5PnVJ&7D+Fp8ABV z5`&LD-<$jPy{-y*V^SqM)9!#_Pj2-x{m$z+9Z*o|JTBGgXYYVM;g|VbitDUfnVn$o zO)6?CZcDklDoODzj+ti@i#WcqPoZ!|IPB98LW!$-p+a4xBVM@%GEGZKmNjQMhh)zv z7D){Gpe-Dv=~>c9f|1vANF&boD=Nb1Dv>4~eD636Lldh?#zD5{6JlcR_b*C_Enw&~ z5l2(w(`{+01xb1FCRfD2ap$u(h1U1B6e&8tQrnC}Cy0GR=i^Uue26Rc6Dx}!4#K*0 zaxt`a+px7-Z!^(U1WN2#kdN#OeR|2z+C@b@w+L67VEi&ZpAdg+8`HJT=wIMJqibhT ztb3PFzsq&7jzQuod3xp7uL?h-7rYao&0MiT_Bux;U*N#ebGv92o(jM2?`1!N2W_M* zeo9$%hEtIy;=`8z1c|kL&ZPn0y`N)i$Y1R9>K!el{moiy)014448YC#9=K zwO3weN|8!`5bU_#f(+ZrVd*9`7Uw?!q?yo&7sk&DJ;#-^tcCtqt5*A(V;&LdHq7Hg zI6sC@!ly9p$^@v&XDsgIuv;9#w^!C1n5+10-tEw~ZdO1kqMDYyDl!5__o}f3hYe2M zCeO)~m&&=JZn%cVH3HzPlcE`9^@``2u+!Y}Remn)DLMHc-h5A9ATgs;7F7=u2=vBlDRbjeYvyNby=TvpI{5nb2@J_YTEEEj4q<@zaGSC_i&xxD!6)d zG{1??({Ma<=Wd4JL%bnEXoBOU_0bbNy3p%mFrMW>#c zzPEvryBevZVUvT^2P&Zobk#9j>vSIW_t?AHy>(^x-Bx~(mvNYb_%$ZFg(s5~oka+Kp(GU68I$h(Vq|fZ zC_u1FM|S)=ldt#5q>&p4r%%p)*7|Rf0}B#-FwHDTo*|P6HB_rz%R;{==hpl#xTt@VLdSrrf~g^ z`IA8ZV1b`UazYpnkn28h&U)$(gdZ*f{n`&kH%Oy54&Z;ebjlh4x?JmnjFAALu}EG} zfGmQ$5vEMJMH`a=+*src#dWK&N1^LFxK9Sa#q_rja$JWra09we<2oL9Q9Sx)?kZFW z$jhOFGE~VcihYlkaZv8?uA7v$*}?2h6i%Qmgc4n~3E(O_`YCRGy~}`NFaj@(?Wz;GS_?T+RqU{S)eD1j$1Gr;C^m z7zDK=xaJ^6``=#Y-2ssNfdRqh0ntJrutGV5Nv&WI%3k1wmD5n+0aRe{0k^!>LFReN zx1g*E>nbyx03KU~UT6->+rG%(owLF=beJxK&a0F;ie1GZ^eKg-VEZb&=s&ajKS#6w zjvC6J#?b|U_(%@uq$c#Q@V_me0S1%)pKz9--{EKwyM}_gOj*Og-NEWLDF_oFtPjG; zXCZ7%#=s}RKr&_5RFN@=H(015AGl4XRN9Bc51`;WWt%vzQvzexDI2BZ@xP~^2$I&7 zA(ndsgLsmA*su8p-~IS q+ZJUZM}`4#Zi@l2F-#HCw*??ha2ta#9s8?H3%YId(*zJG6aF78h1yF1 delta 5107 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 I6Xdi10eY*&F8}}l diff --git a/plugin-build/gradlew b/plugin-build/gradlew index 65dcd68..79a61d4 100755 --- a/plugin-build/gradlew +++ b/plugin-build/gradlew @@ -144,7 +144,7 @@ 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=SC3045 + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac diff --git a/plugin-build/gradlew.bat b/plugin-build/gradlew.bat index 6689b85..93e3f59 100644 --- a/plugin-build/gradlew.bat +++ b/plugin-build/gradlew.bat @@ -1,92 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -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% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -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. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -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. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +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% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +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. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +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. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From ecb80791ffa851c7ff5d4134d5006c001224ea77 Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 16 Mar 2023 01:44:10 +0800 Subject: [PATCH 11/12] Temporally enable CC More work to do in XukeTask. --- gradle.properties | 1 + plugin-build/build.gradle.kts | 4 ++++ .../plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt | 1 + settings.gradle.kts | 2 ++ 4 files changed, 8 insertions(+) diff --git a/gradle.properties b/gradle.properties index 5b4e3da..1566b3d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,5 @@ org.gradle.parallel=true org.gradle.caching=true org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8 +org.gradle.unsafe.configuration-cache=true kotlin.code.style=official diff --git a/plugin-build/build.gradle.kts b/plugin-build/build.gradle.kts index c97da11..1b46a08 100644 --- a/plugin-build/build.gradle.kts +++ b/plugin-build/build.gradle.kts @@ -3,3 +3,7 @@ plugins { alias(libs.plugins.ktlint) alias(libs.plugins.pluginPublish) } + +tasks.publishPlugins { + notCompatibleWithConfigurationCache("https://github.com/gradle/gradle/issues/21283") +} diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt index edce65d..810dc97 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt @@ -11,6 +11,7 @@ abstract class XukePlugin : Plugin { val extension = project.extensions.create(EXTENSION_NAME, XukeExtension::class.java) project.tasks.register(TASK_NAME, XukeTask::class.java) { task -> + task.notCompatibleWithConfigurationCache("XukeTask doesn't support CC") task.buildConfigurationsProp.convention(extension.configurations) task.outputFileProp.convention(extension.outputFile) task.outputPackage.convention(extension.outputPackage) diff --git a/settings.gradle.kts b/settings.gradle.kts index 08568e2..23a90c9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -24,6 +24,8 @@ gradleEnterprise { } } +enableFeaturePreview("STABLE_CONFIGURATION_CACHE") + rootProject.name = ("xuke") include(":example-jvm") From e2343070b972e99582811e9c61cdc545558eebbd Mon Sep 17 00:00:00 2001 From: Goooler Date: Thu, 16 Mar 2023 23:39:14 +0800 Subject: [PATCH 12/12] Minor cleanups --- README.md | 3 +-- example-jvm/build.gradle.kts | 4 +--- .../main/java/io/github/chao2zhang/Utils.kt | 2 +- .../io/github/chao2zhang/XukeExtension.kt | 20 +++++++++++++------ .../java/io/github/chao2zhang/XukePlugin.kt | 1 + .../java/io/github/chao2zhang/XukeTask.kt | 1 - .../io/github/chao2zhang/api/LicenseData.kt | 4 ++-- .../github/chao2zhang/format/KotlinFactory.kt | 6 +++--- 8 files changed, 23 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 96db492..274c9cd 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,7 @@ plugins { id("io.github.chao2zhang.xuke") } -configure { - +xuke { // The Gradle build configurations from which we collect dependencies configurations.set(listOf("runtimeClasspath")) diff --git a/example-jvm/build.gradle.kts b/example-jvm/build.gradle.kts index a6f8f0d..2de35da 100644 --- a/example-jvm/build.gradle.kts +++ b/example-jvm/build.gradle.kts @@ -1,5 +1,3 @@ -import io.github.chao2zhang.XukeExtension - plugins { kotlin("jvm") version "1.8.10" id("io.github.chao2zhang.xuke") @@ -21,7 +19,7 @@ tasks.compileKotlin.configure { dependsOn(tasks.xuke) } -configure { +xuke { configurations.set(listOf("runtimeClasspath")) outputPackage.set("io.github.chao2zhang.example") } diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/Utils.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/Utils.kt index ec4403d..51caf42 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/Utils.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/Utils.kt @@ -1,3 +1,3 @@ package io.github.chao2zhang -inline fun Any.safeAs(): T? = this as? T +internal inline fun Any.safeAs(): T? = this as? T diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeExtension.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeExtension.kt index 43d5b97..c01265c 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeExtension.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeExtension.kt @@ -3,18 +3,26 @@ package io.github.chao2zhang import org.gradle.api.Project import org.gradle.api.model.ObjectFactory import javax.inject.Inject +import org.gradle.api.file.RegularFileProperty +import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.Property abstract class XukeExtension @Inject constructor( project: Project, - objects: ObjectFactory + objects: ObjectFactory, ) { - // The Gradle build configurations from which we collect dependencies - val configurations = objects.listProperty(String::class.java).convention(emptyList()) + /** + * The Gradle build configurations from which we collect dependencies + */ + val configurations: ListProperty = objects.listProperty(String::class.java).convention(emptyList()) - // The output file of the licenses collected - Only supporting .kt file as of now - val outputFile = objects.fileProperty().convention(project.layout.buildDirectory.file("generated/license/SoftwareLicense.kt")) + /** + * The output file of the licenses collected - Only supporting .kt file as of now + */ + val outputFile: RegularFileProperty = objects.fileProperty() + .convention(project.layout.buildDirectory.file("generated/license/SoftwareLicense.kt")) // The output package name of the output file - val outputPackage = objects.property(String::class.java).convention("") + val outputPackage: Property = objects.property(String::class.java).convention("") } diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt index 810dc97..ee1177d 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukePlugin.kt @@ -6,6 +6,7 @@ import org.gradle.api.Project const val EXTENSION_NAME = "xuke" const val TASK_NAME = "xuke" +@Suppress("unused") abstract class XukePlugin : Plugin { override fun apply(project: Project) { val extension = project.extensions.create(EXTENSION_NAME, XukeExtension::class.java) diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt index cd296ec..e4af7be 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/XukeTask.kt @@ -96,7 +96,6 @@ abstract class XukeTask : DefaultTask() { ?.safeAs() ?.file - @OptIn(ExperimentalStdlibApi::class) private fun extractLicenses(pomFile: File): List = buildList { val pomDoc = documentFactory.newDocumentBuilder().parse(pomFile).documentElement val licenseNodes = pomDoc.getElementsByTagName("licenses").singleOrNull()?.childNodes diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/api/LicenseData.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/api/LicenseData.kt index c381a0e..8501c5c 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/api/LicenseData.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/api/LicenseData.kt @@ -4,13 +4,13 @@ data class License( val name: String, val url: String, val distribution: String, - val comments: String + val comments: String, ) data class Dependency( val group: String, val name: String, - val version: String + val version: String, ) typealias LicenseData = Map> diff --git a/plugin-build/plugin/src/main/java/io/github/chao2zhang/format/KotlinFactory.kt b/plugin-build/plugin/src/main/java/io/github/chao2zhang/format/KotlinFactory.kt index a4cc936..67273b4 100644 --- a/plugin-build/plugin/src/main/java/io/github/chao2zhang/format/KotlinFactory.kt +++ b/plugin-build/plugin/src/main/java/io/github/chao2zhang/format/KotlinFactory.kt @@ -8,18 +8,18 @@ object KotlinFactory : FormatterFactory { override fun format(licenseData: LicenseData, options: FormatOptions): String = """ ${options.formatPackagePath()} - + data class License( val name: String, val url: String, val distribution: String, - val comments: String + val comments: String, ) data class Dependency( val group: String, val name: String, - val version: String + val version: String, ) object SoftwareLicense {