From d81a4c003c8ffb4650b957fd3a5fe3b9ac2d6a68 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Mon, 15 Jan 2024 00:00:46 -0700 Subject: [PATCH] use cloud-build-logic (#1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * use cloud-build-logic * build: use cloud-build-logic release * feat: update cloud --------- Co-authored-by: Alexander Söderberg --- build-logic/build.gradle.kts | 45 --------------- build-logic/settings.gradle.kts | 7 --- .../cloud-spring.base-conventions.gradle.kts | 55 ------------------- ...cloud-spring.parent-build-logic.gradle.kts | 5 -- ...d-spring.publishing-conventions.gradle.kts | 28 ---------- build.gradle.kts | 3 +- cloud-spring/build.gradle.kts | 2 +- .../cloud/spring/SpringCommandManager.java | 3 +- example/build.gradle.kts | 20 ++++--- .../example/commands/ListCatCommand.java | 4 +- gradle.properties | 1 - gradle/build-logic/build.gradle.kts | 20 +++++++ gradle/build-logic/settings.gradle.kts | 15 +++++ .../cloud-spring.base-conventions.gradle.kts | 31 +++++++++++ ...d-spring.publishing-conventions.gradle.kts | 20 +++++++ .../src/main/kotlin/extensions.kt | 2 +- gradle/libs.versions.toml | 14 ++--- settings.gradle.kts | 7 ++- 18 files changed, 116 insertions(+), 166 deletions(-) delete mode 100644 build-logic/build.gradle.kts delete mode 100644 build-logic/settings.gradle.kts delete mode 100644 build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts delete mode 100644 build-logic/src/main/kotlin/cloud-spring.parent-build-logic.gradle.kts delete mode 100644 build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts create mode 100644 gradle/build-logic/build.gradle.kts create mode 100644 gradle/build-logic/settings.gradle.kts create mode 100644 gradle/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts create mode 100644 gradle/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts rename {build-logic => gradle/build-logic}/src/main/kotlin/extensions.kt (75%) diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts deleted file mode 100644 index b60d01c..0000000 --- a/build-logic/build.gradle.kts +++ /dev/null @@ -1,45 +0,0 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - -plugins { - `kotlin-dsl` - alias(libs.plugins.spotless) -} - -repositories { - gradlePluginPortal() -} - -dependencies { - implementation(libs.spotless) - implementation(libs.indraCommon) - implementation(libs.gradleKotlinJvm) - - implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) -} - -java { - toolchain { - targetCompatibility = JavaVersion.VERSION_17 - sourceCompatibility = JavaVersion.VERSION_17 - } -} - -tasks.withType().configureEach { - kotlinOptions { - jvmTarget = "17" - } -} - -spotless { - kotlinGradle { - target("*.gradle.kts", "src/*/kotlin/**.gradle.kts", "src/*/kotlin/**.kt") - ktlint(libs.versions.ktlint.get()) - .editorConfigOverride( - mapOf( - "ktlint_standard_filename" to "disabled", - "ktlint_standard_trailing-comma-on-call-site" to "disabled", - "ktlint_standard_trailing-comma-on-declaration-site" to "disabled" - ) - ) - } -} diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts deleted file mode 100644 index b5a0fab..0000000 --- a/build-logic/settings.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -dependencyResolutionManagement { - versionCatalogs { - create("libs") { - from(files("../gradle/libs.versions.toml")) - } - } -} diff --git a/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts b/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts deleted file mode 100644 index 79b5774..0000000 --- a/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts +++ /dev/null @@ -1,55 +0,0 @@ -import com.diffplug.gradle.spotless.FormatExtension - -plugins { - id("net.kyori.indra") - id("net.kyori.indra.checkstyle") - id("com.diffplug.spotless") -} - -indra { - javaVersions { - minimumToolchain(17) - target(17) - testWith(17) - } - checkstyle(libs.versions.checkstyle.get()) -} - -spotless { - fun FormatExtension.applyCommon(spaces: Int = 4) { - indentWithSpaces(spaces) - trimTrailingWhitespace() - endWithNewline() - } - java { - licenseHeaderFile(rootProject.file("HEADER")) - importOrderFile(rootProject.file(".spotless/cloud-spring.importorder")) - applyCommon() - - targetExclude("**/generated/**") - } - kotlin { - licenseHeaderFile(rootProject.file("HEADER")) - applyCommon() - } - kotlinGradle { - ktlint(libs.versions.ktlint.get()) - } - format("configs") { - target("**/*.yml", "**/*.yaml", "**/*.json") - applyCommon(2) - } -} - -// Common dependencies. -dependencies { - compileOnlyApi(libs.checkerQual) - compileOnlyApi(libs.apiguardian) - - testDependencies() -} - -fun DependencyHandlerScope.testDependencies() { - testImplementation(libs.truth) - testImplementation(libs.awaitility) -} diff --git a/build-logic/src/main/kotlin/cloud-spring.parent-build-logic.gradle.kts b/build-logic/src/main/kotlin/cloud-spring.parent-build-logic.gradle.kts deleted file mode 100644 index 4f2065a..0000000 --- a/build-logic/src/main/kotlin/cloud-spring.parent-build-logic.gradle.kts +++ /dev/null @@ -1,5 +0,0 @@ -plugins { - id("com.diffplug.spotless") -} - -spotless.predeclareDeps() diff --git a/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts b/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts deleted file mode 100644 index 55410a6..0000000 --- a/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts +++ /dev/null @@ -1,28 +0,0 @@ -plugins { - id("net.kyori.indra.publishing") -} - -signing { - val signingKey: String? by project - val signingPassword: String? by project - useInMemoryPgpKeys(signingKey, signingPassword) -} - -indra { - github("Incendo", "cloud-spring") { - ci(true) - } - mitLicense() - - configurePublications { - pom { - developers { - developer { - id.set("Sauilitired") - name.set("Alexander Söderberg") - email.set("alexander.soderberg@incend.org") - } - } - } - } -} diff --git a/build.gradle.kts b/build.gradle.kts index 63e3d77..6c0f7c0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ plugins { - id("cloud-spring.parent-build-logic") + alias(libs.plugins.cloud.buildLogic.rootProject.publishing) + alias(libs.plugins.cloud.buildLogic.rootProject.spotless) } spotlessPredeclare { diff --git a/cloud-spring/build.gradle.kts b/cloud-spring/build.gradle.kts index a0d9c8a..f2bd808 100644 --- a/cloud-spring/build.gradle.kts +++ b/cloud-spring/build.gradle.kts @@ -17,7 +17,7 @@ dependencies { api(libs.spring.shell) api(platform(libs.spring.shell.dependencies)) - compileOnlyApi(libs.cloud.annotations) + compileOnly(libs.cloud.annotations) testImplementation(libs.spring.boot.starter.test) testImplementation(libs.spring.shell.test) diff --git a/cloud-spring/src/main/java/org/incendo/cloud/spring/SpringCommandManager.java b/cloud-spring/src/main/java/org/incendo/cloud/spring/SpringCommandManager.java index ea45baf..9147a11 100644 --- a/cloud-spring/src/main/java/org/incendo/cloud/spring/SpringCommandManager.java +++ b/cloud-spring/src/main/java/org/incendo/cloud/spring/SpringCommandManager.java @@ -78,6 +78,7 @@ public class SpringCommandManager extends CommandManager implements Comple * @param commandSenderMapper the mapper for the custom command sender type * @param applicationContext the application context */ + @SuppressWarnings("this-escape") public SpringCommandManager( final @NonNull ExecutionCoordinator executionCoordinator, final @NonNull SpringCommandPermissionHandler commandPermissionHandler, @@ -143,6 +144,6 @@ private void registerDefaultExceptionHandlers() { .registerHandler(NoPermissionException.class, ctx -> LOGGER.error(MESSAGE_NO_PERMS)) .registerHandler(InvalidCommandSenderException.class, ctx -> LOGGER.error(ctx.exception().getMessage())) .registerHandler(InvalidSyntaxException.class, - ctx -> LOGGER.error(MESSAGE_INVALID_SYNTAX + ctx.exception().getCorrectSyntax())); + ctx -> LOGGER.error(MESSAGE_INVALID_SYNTAX + ctx.exception().correctSyntax())); } } diff --git a/example/build.gradle.kts b/example/build.gradle.kts index d01eaef..5eed4be 100644 --- a/example/build.gradle.kts +++ b/example/build.gradle.kts @@ -4,7 +4,7 @@ plugins { alias(libs.plugins.graal.native.buildtools) } -apply(plugin = "io.spring.dependency-management") +plugins.apply("io.spring.dependency-management") graalvmNative { binaries.all { @@ -26,14 +26,18 @@ graalvmNative { toolchainDetection = false } -java { - toolchain { - targetCompatibility = JavaVersion.VERSION_17 - sourceCompatibility = JavaVersion.VERSION_17 - } -} - dependencies { implementation(project(":cloud-spring")) implementation(libs.cloud.annotations) } + +spotless { + java { + targetExclude("build/generated/**") + } +} + +tasks.compileAotJava { + // I couldn't figure out the warnings in generated code + options.compilerArgs.clear() +} diff --git a/example/src/main/java/org/incendo/cloud/spring/example/commands/ListCatCommand.java b/example/src/main/java/org/incendo/cloud/spring/example/commands/ListCatCommand.java index 6f4e560..d9aaed8 100644 --- a/example/src/main/java/org/incendo/cloud/spring/example/commands/ListCatCommand.java +++ b/example/src/main/java/org/incendo/cloud/spring/example/commands/ListCatCommand.java @@ -23,8 +23,8 @@ // package org.incendo.cloud.spring.example.commands; +import cloud.commandframework.annotations.Command; import cloud.commandframework.annotations.CommandDescription; -import cloud.commandframework.annotations.CommandMethod; import org.checkerframework.checker.nullness.qual.NonNull; import org.incendo.cloud.spring.SpringCommandSender; import org.incendo.cloud.spring.annotation.CommandGroup; @@ -58,7 +58,7 @@ public ListCatCommand(final @NonNull CatService catService) { */ @CommandGroup("Cat") @CommandDescription("List the cats") - @CommandMethod("cat list") + @Command("cat list") public void listCats(final @NonNull SpringCommandSender sender) { sender.writeLine("Cats"); this.catService.cats().forEach(cat -> sender.writeLine(String.format("- %s (Age: %d)", cat.name(), cat.age()))); diff --git a/gradle.properties b/gradle.properties index e264f29..13e9654 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,3 @@ description=cloud-spring org.gradle.caching=true org.gradle.parallel=true -org.gradle.jvmargs=-Xmx2G diff --git a/gradle/build-logic/build.gradle.kts b/gradle/build-logic/build.gradle.kts new file mode 100644 index 0000000..1ad12cc --- /dev/null +++ b/gradle/build-logic/build.gradle.kts @@ -0,0 +1,20 @@ +plugins { + `kotlin-dsl` + alias(libs.plugins.cloud.buildLogic.spotless) +} + +repositories { + gradlePluginPortal() +} + +dependencies { + implementation(libs.cloud.build.logic) + implementation(libs.gradleKotlinJvm) + + implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) +} + +cloudSpotless { + licenseHeaderFile.convention(null as RegularFile?) + ktlintVersion = libs.versions.ktlint +} diff --git a/gradle/build-logic/settings.gradle.kts b/gradle/build-logic/settings.gradle.kts new file mode 100644 index 0000000..6071c27 --- /dev/null +++ b/gradle/build-logic/settings.gradle.kts @@ -0,0 +1,15 @@ +rootProject.name = "build-logic" + +pluginManagement { + repositories { + gradlePluginPortal() + } +} + +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../libs.versions.toml")) + } + } +} diff --git a/gradle/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts b/gradle/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts new file mode 100644 index 0000000..658554c --- /dev/null +++ b/gradle/build-logic/src/main/kotlin/cloud-spring.base-conventions.gradle.kts @@ -0,0 +1,31 @@ +plugins { + id("org.incendo.cloud-build-logic") + id("org.incendo.cloud-build-logic.spotless") +} + +indra { + javaVersions { + minimumToolchain(17) + target(17) + testWith().set(setOf(17)) + } + checkstyle().set(libs.versions.checkstyle) +} + +cloudSpotless { + ktlintVersion = libs.versions.ktlint +} + +spotless { + java { + importOrderFile(rootProject.file(".spotless/cloud-spring.importorder")) + } +} + +// Common dependencies. +dependencies { + + // test dependencies + testImplementation(libs.truth) + testImplementation(libs.awaitility) +} diff --git a/gradle/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts b/gradle/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts new file mode 100644 index 0000000..0ddfa03 --- /dev/null +++ b/gradle/build-logic/src/main/kotlin/cloud-spring.publishing-conventions.gradle.kts @@ -0,0 +1,20 @@ +import org.incendo.cloudbuildlogic.city + +plugins { + id("org.incendo.cloud-build-logic.publishing") +} + +indra { + github("Incendo", "cloud-spring") { + ci(true) + } + mitLicense() + + configurePublications { + pom { + developers { + city() + } + } + } +} diff --git a/build-logic/src/main/kotlin/extensions.kt b/gradle/build-logic/src/main/kotlin/extensions.kt similarity index 75% rename from build-logic/src/main/kotlin/extensions.kt rename to gradle/build-logic/src/main/kotlin/extensions.kt index 74ea830..12ae20b 100644 --- a/build-logic/src/main/kotlin/extensions.kt +++ b/gradle/build-logic/src/main/kotlin/extensions.kt @@ -2,5 +2,5 @@ import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Project import org.gradle.kotlin.dsl.the -public val Project.libs: LibrariesForLibs +val Project.libs: LibrariesForLibs get() = the() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3a9e690..123677f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,19 +1,18 @@ [plugins] -spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } spring-plugin-boot = { id = "org.springframework.boot", version.ref = "springBoot" } graal-native-buildtools = { id = "org.graalvm.buildtools.native", version.ref = "graal" } +cloud-buildLogic-spotless = { id = "org.incendo.cloud-build-logic.spotless", version.ref = "cloud-build-logic" } +cloud-buildLogic-rootProject-publishing = { id = "org.incendo.cloud-build-logic.publishing.root-project", version.ref = "cloud-build-logic" } +cloud-buildLogic-rootProject-spotless = { id = "org.incendo.cloud-build-logic.spotless.root-project", version.ref = "cloud-build-logic" } [versions] +cloud-build-logic = "0.0.3" springBoot = "3.2.0" -spotless = "6.22.0" ktlint = "1.0.1" -indra = "3.1.3" checkstyle = "10.12.5" kotlin = "1.9.20" graal = "0.9.28" -checkerQual = "3.40.0" -apiguardian = "1.1.2" slf4j = "2.0.9" cloud = "2.0.0-SNAPSHOT" @@ -24,12 +23,9 @@ truth = "1.1.4" awaitility = "4.2.0" [libraries] -spotless = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotless" } -indraCommon = { group = "net.kyori", name = "indra-common", version.ref = "indra" } +cloud-build-logic = { module = "org.incendo:cloud-build-logic", version.ref = "cloud-build-logic" } gradleKotlinJvm = { group = "org.jetbrains.kotlin.jvm", name = "org.jetbrains.kotlin.jvm.gradle.plugin", version.ref = "kotlin" } -checkerQual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checkerQual" } -apiguardian = { group = "org.apiguardian", name = "apiguardian-api", version.ref = "apiguardian" } slf4j = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" } awaitility = { group = "org.awaitility", name = "awaitility", version.ref = "awaitility" } diff --git a/settings.gradle.kts b/settings.gradle.kts index a81fc00..b69e875 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -2,10 +2,13 @@ enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") pluginManagement { repositories { - mavenCentral() gradlePluginPortal() } - includeBuild("build-logic") + includeBuild("gradle/build-logic") +} + +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "0.7.0" } dependencyResolutionManagement {