From 9961af871bf01acf864827066745a5a58eaa085d Mon Sep 17 00:00:00 2001 From: 0marperez Date: Thu, 9 May 2024 13:07:41 -0400 Subject: [PATCH 1/9] upgrade --- build-plugins/build-support/build.gradle.kts | 7 +++++++ .../src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 2 +- build.gradle.kts | 1 + gradle/libs.versions.toml | 7 ++++--- ktlint-rules/build.gradle.kts | 3 ++- .../software/aws/ktlint/rules/CopyrightHeaderRule.kt | 5 +++-- .../software/aws/ktlint/rules/CustomRuleSetProvider.kt | 7 ++++--- .../kotlin/software/aws/ktlint/rules/ExpressionBodyRule.kt | 5 +++-- .../software/aws/ktlint/rules/MultilineIfElseBlockRule.kt | 7 ++++--- 9 files changed, 29 insertions(+), 15 deletions(-) diff --git a/build-plugins/build-support/build.gradle.kts b/build-plugins/build-support/build.gradle.kts index e76fcbf..5ea5bb7 100644 --- a/build-plugins/build-support/build.gradle.kts +++ b/build-plugins/build-support/build.gradle.kts @@ -32,10 +32,17 @@ gradlePlugin { create("artifact-size-metrics") { id = "aws.sdk.kotlin.gradle.artifactsizemetrics" implementationClass = "aws.sdk.kotlin.gradle.plugins.artifactsizemetrics.ArtifactSizeMetricsPlugin" + version = "100.0" } } } +publishing { + repositories { + mavenLocal() + } +} + tasks.withType { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index 1bdfe0c..8ec0546 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -26,7 +26,7 @@ fun Project.configureLinting(lintPaths: List) { } // TODO - is there anyway to align this with the version from libs.versions.toml in this project/repo - val ktlintVersion = "0.48.1" + val ktlintVersion = "1.1.0" dependencies { ktlint("com.pinterest:ktlint:$ktlintVersion") } diff --git a/build.gradle.kts b/build.gradle.kts index a6b4b0a..0599165 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -48,6 +48,7 @@ fun propertyOrEnv(propName: String, envName: String): String? { val ktlint by configurations.creating { attributes { attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.SHADOWED)) } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a6be39b..ab72878 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,12 +1,13 @@ [versions] -ktlint = "0.48.1" +ktlint = "1.1.0" smithy-version = "1.42.0" smithy-gradle-plugin-version = "0.9.0" junit-version = "5.10.1" [libraries] -ktlint = { module = "com.pinterest:ktlint", version.ref = "ktlint" } -ktlint-core = { module = "com.pinterest.ktlint:ktlint-core", version.ref = "ktlint" } +ktlint = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" } +ktlint-rule-engine-core = { module = "com.pinterest.ktlint:ktlint-rule-engine-core", version.ref = "ktlint" } +ktlint-cli-ruleset-core = { module = "com.pinterest.ktlint:ktlint-cli-ruleset-core", version.ref = "ktlint" } ktlint-test = {module = "com.pinterest.ktlint:ktlint-test", version.ref = "ktlint" } nexusPublishPlugin = { module = "io.github.gradle-nexus:publish-plugin", version = "1.3.0" } smithy-model = { module = "software.amazon.smithy:smithy-model", version.ref = "smithy-version" } diff --git a/ktlint-rules/build.gradle.kts b/ktlint-rules/build.gradle.kts index 6b722ba..341e085 100644 --- a/ktlint-rules/build.gradle.kts +++ b/ktlint-rules/build.gradle.kts @@ -16,7 +16,8 @@ kotlin { sourceSets { main { dependencies { - implementation(libs.ktlint.core) + implementation(libs.ktlint.rule.engine.core) + implementation(libs.ktlint.cli.ruleset.core) } } diff --git a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CopyrightHeaderRule.kt b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CopyrightHeaderRule.kt index a43e837..dc0d9f1 100644 --- a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CopyrightHeaderRule.kt +++ b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CopyrightHeaderRule.kt @@ -4,13 +4,14 @@ */ package software.aws.ktlint.rules -import com.pinterest.ktlint.core.Rule +import com.pinterest.ktlint.rule.engine.core.api.Rule +import com.pinterest.ktlint.rule.engine.core.api.RuleId import org.jetbrains.kotlin.com.intellij.lang.ASTNode import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.PsiCommentImpl import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.stubs.elements.KtFileElementType -class CopyrightHeaderRule : Rule("copyright-header") { +class CopyrightHeaderRule : Rule(RuleId("copyright-header"), About()) { companion object { private val header = """ /* diff --git a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CustomRuleSetProvider.kt b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CustomRuleSetProvider.kt index d0c2cde..48e3a33 100644 --- a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CustomRuleSetProvider.kt +++ b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CustomRuleSetProvider.kt @@ -4,10 +4,11 @@ */ package software.aws.ktlint.rules -import com.pinterest.ktlint.core.RuleProvider -import com.pinterest.ktlint.core.RuleSetProviderV2 +import com.pinterest.ktlint.cli.ruleset.core.api.RuleSetProviderV3 +import com.pinterest.ktlint.rule.engine.core.api.RuleProvider +import com.pinterest.ktlint.rule.engine.core.api.RuleSetId -class CustomRuleSetProvider : RuleSetProviderV2("custom-ktlint-rules", NO_ABOUT) { +class CustomRuleSetProvider : RuleSetProviderV3(RuleSetId("custom-ktlint-rules")) { override fun getRuleProviders() = setOf( RuleProvider { CopyrightHeaderRule() }, RuleProvider { ExpressionBodyRule() }, diff --git a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/ExpressionBodyRule.kt b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/ExpressionBodyRule.kt index 14d7647..e54e5c0 100644 --- a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/ExpressionBodyRule.kt +++ b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/ExpressionBodyRule.kt @@ -4,13 +4,14 @@ */ package software.aws.ktlint.rules -import com.pinterest.ktlint.core.Rule +import com.pinterest.ktlint.rule.engine.core.api.Rule +import com.pinterest.ktlint.rule.engine.core.api.RuleId import org.jetbrains.kotlin.com.intellij.lang.ASTNode import org.jetbrains.kotlin.psi.KtBlockExpression import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtReturnExpression -class ExpressionBodyRule : Rule("expression-body") { +class ExpressionBodyRule : Rule(RuleId("expression-body"), About()) { override fun beforeVisitChildNodes( node: ASTNode, autoCorrect: Boolean, diff --git a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/MultilineIfElseBlockRule.kt b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/MultilineIfElseBlockRule.kt index 090b1dc..ee4a7b0 100644 --- a/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/MultilineIfElseBlockRule.kt +++ b/ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/MultilineIfElseBlockRule.kt @@ -4,11 +4,12 @@ */ package software.aws.ktlint.rules -import com.pinterest.ktlint.core.Rule -import com.pinterest.ktlint.core.ast.ElementType +import com.pinterest.ktlint.rule.engine.core.api.ElementType +import com.pinterest.ktlint.rule.engine.core.api.Rule +import com.pinterest.ktlint.rule.engine.core.api.RuleId import org.jetbrains.kotlin.com.intellij.lang.ASTNode -class MultilineIfElseBlockRule : Rule("multiline-if-else-block") { +class MultilineIfElseBlockRule : Rule(RuleId("multiline-if-else-block"), About()) { override fun beforeVisitChildNodes( node: ASTNode, autoCorrect: Boolean, From 2ac88cd07398ca50411d517d4bd4d2f5959373d6 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Thu, 9 May 2024 14:36:13 -0400 Subject: [PATCH 2/9] upgrade ktlint to latest version --- .editorconfig | 4 +++- .../src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 2 +- gradle/libs.versions.toml | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.editorconfig b/.editorconfig index 3c92363..b814d53 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,4 +6,6 @@ ktlint_standard_filename = disabled # enable trailing commas per JetBrains recommendation # (https://kotlinlang.org/docs/coding-conventions.html#trailing-commas) ij_kotlin_allow_trailing_comma_on_call_site = true -ij_kotlin_allow_trailing_comma = true \ No newline at end of file +ij_kotlin_allow_trailing_comma = true + +ktlint_code_style = intellij_idea \ No newline at end of file diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index 8ec0546..79cad08 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -26,7 +26,7 @@ fun Project.configureLinting(lintPaths: List) { } // TODO - is there anyway to align this with the version from libs.versions.toml in this project/repo - val ktlintVersion = "1.1.0" + val ktlintVersion = "1.2.1" dependencies { ktlint("com.pinterest:ktlint:$ktlintVersion") } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ab72878..9de7da9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -ktlint = "1.1.0" +ktlint = "1.2.1" smithy-version = "1.42.0" smithy-gradle-plugin-version = "0.9.0" junit-version = "5.10.1" From 83d8476900b538b1bab754c9460cdfd7208d2a62 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Thu, 9 May 2024 14:58:13 -0400 Subject: [PATCH 3/9] remove manual tracking of ktlint version in code --- build-plugins/build-support/build.gradle.kts | 8 +------- .../kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 14 ++++---------- build.gradle.kts | 2 +- gradle/libs.versions.toml | 3 ++- 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/build-plugins/build-support/build.gradle.kts b/build-plugins/build-support/build.gradle.kts index 5ea5bb7..93f8622 100644 --- a/build-plugins/build-support/build.gradle.kts +++ b/build-plugins/build-support/build.gradle.kts @@ -25,6 +25,7 @@ dependencies { implementation("aws.sdk.kotlin:s3:1.1.+") implementation("aws.sdk.kotlin:cloudwatch:1.1.+") testImplementation(libs.junit.jupiter) + kotlin(libs.ktlint.toString()) } gradlePlugin { @@ -32,17 +33,10 @@ gradlePlugin { create("artifact-size-metrics") { id = "aws.sdk.kotlin.gradle.artifactsizemetrics" implementationClass = "aws.sdk.kotlin.gradle.plugins.artifactsizemetrics.ArtifactSizeMetricsPlugin" - version = "100.0" } } } -publishing { - repositories { - mavenLocal() - } -} - tasks.withType { compilerOptions { jvmTarget.set(JvmTarget.JVM_1_8) diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index 79cad08..b799dbb 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -8,7 +8,6 @@ import aws.sdk.kotlin.gradle.util.verifyRootProject import org.gradle.api.Project import org.gradle.api.attributes.Bundling import org.gradle.api.tasks.JavaExec -import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register @@ -25,19 +24,14 @@ fun Project.configureLinting(lintPaths: List) { } } - // TODO - is there anyway to align this with the version from libs.versions.toml in this project/repo - val ktlintVersion = "1.2.1" - dependencies { - ktlint("com.pinterest:ktlint:$ktlintVersion") - } - // add the buildscript classpath which should pickup our custom ktlint-rules (via runtimeOnly dep on this plugin) // plus any custom rules added by consumer - val execKtlintClaspath = ktlint + buildscript.configurations.getByName("classpath") + val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath") + tasks.register("ktlint") { description = "Check Kotlin code style." group = "Verification" - classpath = execKtlintClaspath + classpath = execKtlintClasspath mainClass.set("com.pinterest.ktlint.Main") args = lintPaths jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") @@ -46,7 +40,7 @@ fun Project.configureLinting(lintPaths: List) { tasks.register("ktlintFormat") { description = "Auto fix Kotlin code style violations" group = "formatting" - classpath = execKtlintClaspath + classpath = execKtlintClasspath mainClass.set("com.pinterest.ktlint.Main") args = listOf("-F") + lintPaths jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") diff --git a/build.gradle.kts b/build.gradle.kts index 0599165..1b042f2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -53,7 +53,7 @@ val ktlint by configurations.creating { } dependencies { - ktlint(libs.ktlint) + ktlint(libs.ktlint.cli) ktlint(project(":ktlint-rules")) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9de7da9..f52a2dd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,8 @@ smithy-gradle-plugin-version = "0.9.0" junit-version = "5.10.1" [libraries] -ktlint = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" } +ktlint = { module = "com.pinterest.ktlint:ktlint", version.ref = "ktlint" } +ktlint-cli = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" } ktlint-rule-engine-core = { module = "com.pinterest.ktlint:ktlint-rule-engine-core", version.ref = "ktlint" } ktlint-cli-ruleset-core = { module = "com.pinterest.ktlint:ktlint-cli-ruleset-core", version.ref = "ktlint" } ktlint-test = {module = "com.pinterest.ktlint:ktlint-test", version.ref = "ktlint" } From a14c0f6c0f6b80722fd51d0c01092e40a4904875 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 10 May 2024 11:56:22 -0400 Subject: [PATCH 4/9] try to make ktlint task work on consumers --- .../src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 6 ++++-- ktlint-rules/build.gradle.kts | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index b799dbb..25a5a6f 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -26,12 +26,14 @@ fun Project.configureLinting(lintPaths: List) { // add the buildscript classpath which should pickup our custom ktlint-rules (via runtimeOnly dep on this plugin) // plus any custom rules added by consumer - val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath") + val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath").filter { + !it.path.contains("ch.qos.logback/logback-classic") + } tasks.register("ktlint") { description = "Check Kotlin code style." group = "Verification" - classpath = execKtlintClasspath + classpath = execKtlintClasspath // FIXME: Classpath contains multiple SL4J providers mainClass.set("com.pinterest.ktlint.Main") args = lintPaths jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") diff --git a/ktlint-rules/build.gradle.kts b/ktlint-rules/build.gradle.kts index 341e085..04da70a 100644 --- a/ktlint-rules/build.gradle.kts +++ b/ktlint-rules/build.gradle.kts @@ -18,6 +18,7 @@ kotlin { dependencies { implementation(libs.ktlint.rule.engine.core) implementation(libs.ktlint.cli.ruleset.core) + implementation(libs.ktlint.cli) } } From dd50396d7eff85c0dba4f17082cc4c39c4e6b87b Mon Sep 17 00:00:00 2001 From: 0marperez Date: Fri, 10 May 2024 12:00:28 -0400 Subject: [PATCH 5/9] clean up --- .../src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index 25a5a6f..bd01d16 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -27,13 +27,14 @@ fun Project.configureLinting(lintPaths: List) { // add the buildscript classpath which should pickup our custom ktlint-rules (via runtimeOnly dep on this plugin) // plus any custom rules added by consumer val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath").filter { - !it.path.contains("ch.qos.logback/logback-classic") + true +// !it.path.contains("ch.qos.logback/logback-classic") <----- Possible next step ? } tasks.register("ktlint") { description = "Check Kotlin code style." group = "Verification" - classpath = execKtlintClasspath // FIXME: Classpath contains multiple SL4J providers + classpath = execKtlintClasspath mainClass.set("com.pinterest.ktlint.Main") args = lintPaths jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") From 0950d9b4528eae91c115f66d600c9247c6793089 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Wed, 26 Jun 2024 08:31:55 -0500 Subject: [PATCH 6/9] ktlint is running --- .editorconfig | 6 +++--- build-plugins/build-support/build.gradle.kts | 1 - .../kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 12 ++++++++---- build.gradle.kts | 2 -- gradle/libs.versions.toml | 3 +-- ...2 => com.pinterest.ktlint.core.RuleSetProviderV3} | 0 6 files changed, 12 insertions(+), 12 deletions(-) rename ktlint-rules/src/main/resources/META-INF/services/{com.pinterest.ktlint.core.RuleSetProviderV2 => com.pinterest.ktlint.core.RuleSetProviderV3} (100%) diff --git a/.editorconfig b/.editorconfig index b814d53..46495f9 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,4 +1,6 @@ [*.{kt,kts}] +ktlint_code_style = intellij_idea + # ktlint rules to disable ktlint_standard_no-wildcard-imports = disabled ktlint_standard_filename = disabled @@ -6,6 +8,4 @@ ktlint_standard_filename = disabled # enable trailing commas per JetBrains recommendation # (https://kotlinlang.org/docs/coding-conventions.html#trailing-commas) ij_kotlin_allow_trailing_comma_on_call_site = true -ij_kotlin_allow_trailing_comma = true - -ktlint_code_style = intellij_idea \ No newline at end of file +ij_kotlin_allow_trailing_comma = true \ No newline at end of file diff --git a/build-plugins/build-support/build.gradle.kts b/build-plugins/build-support/build.gradle.kts index 93f8622..e76fcbf 100644 --- a/build-plugins/build-support/build.gradle.kts +++ b/build-plugins/build-support/build.gradle.kts @@ -25,7 +25,6 @@ dependencies { implementation("aws.sdk.kotlin:s3:1.1.+") implementation("aws.sdk.kotlin:cloudwatch:1.1.+") testImplementation(libs.junit.jupiter) - kotlin(libs.ktlint.toString()) } gradlePlugin { diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index bd01d16..c261f4d 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -8,6 +8,7 @@ import aws.sdk.kotlin.gradle.util.verifyRootProject import org.gradle.api.Project import org.gradle.api.attributes.Bundling import org.gradle.api.tasks.JavaExec +import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register @@ -24,12 +25,15 @@ fun Project.configureLinting(lintPaths: List) { } } + // TODO - is there anyway to align this with the version from libs.versions.toml in this project/repo + val ktlintVersion = "1.3.0" + dependencies { + ktlint("com.pinterest.ktlint:ktlint-cli:$ktlintVersion") + } + // add the buildscript classpath which should pickup our custom ktlint-rules (via runtimeOnly dep on this plugin) // plus any custom rules added by consumer - val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath").filter { - true -// !it.path.contains("ch.qos.logback/logback-classic") <----- Possible next step ? - } + val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath") tasks.register("ktlint") { description = "Check Kotlin code style." diff --git a/build.gradle.kts b/build.gradle.kts index 1b042f2..5cdac32 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -48,12 +48,10 @@ fun propertyOrEnv(propName: String, envName: String): String? { val ktlint by configurations.creating { attributes { attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) - attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.SHADOWED)) } } dependencies { - ktlint(libs.ktlint.cli) ktlint(project(":ktlint-rules")) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f52a2dd..b26f7ac 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,11 +1,10 @@ [versions] -ktlint = "1.2.1" +ktlint = "1.3.0" smithy-version = "1.42.0" smithy-gradle-plugin-version = "0.9.0" junit-version = "5.10.1" [libraries] -ktlint = { module = "com.pinterest.ktlint:ktlint", version.ref = "ktlint" } ktlint-cli = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" } ktlint-rule-engine-core = { module = "com.pinterest.ktlint:ktlint-rule-engine-core", version.ref = "ktlint" } ktlint-cli-ruleset-core = { module = "com.pinterest.ktlint:ktlint-cli-ruleset-core", version.ref = "ktlint" } diff --git a/ktlint-rules/src/main/resources/META-INF/services/com.pinterest.ktlint.core.RuleSetProviderV2 b/ktlint-rules/src/main/resources/META-INF/services/com.pinterest.ktlint.core.RuleSetProviderV3 similarity index 100% rename from ktlint-rules/src/main/resources/META-INF/services/com.pinterest.ktlint.core.RuleSetProviderV2 rename to ktlint-rules/src/main/resources/META-INF/services/com.pinterest.ktlint.core.RuleSetProviderV3 From 3251c171a4eb8dee9a927d703a218feebb3be23f Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Wed, 26 Jun 2024 09:31:15 -0500 Subject: [PATCH 7/9] ktlint is running (in aws-kotlin-repo-tools too now) --- .../aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 25 ++++++++----------- .../AnalyzeArtifactSizeMetrics.kt | 4 +-- build.gradle.kts | 23 ++++++++--------- ktlint-rules/build.gradle.kts | 2 -- 4 files changed, 24 insertions(+), 30 deletions(-) diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index c261f4d..12bb105 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -8,9 +8,8 @@ import aws.sdk.kotlin.gradle.util.verifyRootProject import org.gradle.api.Project import org.gradle.api.attributes.Bundling import org.gradle.api.tasks.JavaExec -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.named -import org.gradle.kotlin.dsl.register +import org.gradle.kotlin.dsl.* +import org.gradle.language.base.plugins.LifecycleBasePlugin /** * Configure lint rules for the project @@ -19,16 +18,15 @@ import org.gradle.kotlin.dsl.register fun Project.configureLinting(lintPaths: List) { verifyRootProject { "Kotlin SDK lint configuration is expected to be configured on the root project" } - val ktlint = configurations.create("ktlint") { - attributes { - attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) - } - } + val ktlint by configurations.creating - // TODO - is there anyway to align this with the version from libs.versions.toml in this project/repo - val ktlintVersion = "1.3.0" dependencies { - ktlint("com.pinterest.ktlint:ktlint-cli:$ktlintVersion") + val ktlintVersion = "1.3.0" + ktlint("com.pinterest.ktlint:ktlint-cli:$ktlintVersion") { + attributes { + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + } + } } // add the buildscript classpath which should pickup our custom ktlint-rules (via runtimeOnly dep on this plugin) @@ -36,17 +34,16 @@ fun Project.configureLinting(lintPaths: List) { val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath") tasks.register("ktlint") { + group = LifecycleBasePlugin.VERIFICATION_GROUP description = "Check Kotlin code style." - group = "Verification" classpath = execKtlintClasspath mainClass.set("com.pinterest.ktlint.Main") args = lintPaths - jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") } tasks.register("ktlintFormat") { + group = LifecycleBasePlugin.VERIFICATION_GROUP description = "Auto fix Kotlin code style violations" - group = "formatting" classpath = execKtlintClasspath mainClass.set("com.pinterest.ktlint.Main") args = listOf("-F") + lintPaths diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/plugins/artifactsizemetrics/AnalyzeArtifactSizeMetrics.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/plugins/artifactsizemetrics/AnalyzeArtifactSizeMetrics.kt index 9bbb970..08b1c2c 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/plugins/artifactsizemetrics/AnalyzeArtifactSizeMetrics.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/plugins/artifactsizemetrics/AnalyzeArtifactSizeMetrics.kt @@ -103,8 +103,8 @@ internal abstract class AnalyzeArtifactSizeMetrics : DefaultTask() { val changeHappened = artifactSizeMetrics.values.any { it.delta.isNotaFluctuation() } val significantChange = artifactSizeMetrics.values.any { - (it.percentage > pluginConfig.significantChangeThresholdPercentage) || // Increase in size above threshold - (it.latestReleaseSize == 0L) // New artifact + // Increase in size above threshold or new artifact + (it.percentage > pluginConfig.significantChangeThresholdPercentage) || (it.latestReleaseSize == 0L) } return ArtifactSizeMetricsAnalysis(artifactSizeMetrics, significantChange, changeHappened) diff --git a/build.gradle.kts b/build.gradle.kts index 5cdac32..1361364 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -44,14 +44,14 @@ fun propertyOrEnv(propName: String, envName: String): String? { return findProperty(propName) as? String ?: env[envName] } -// chicken and egg problem, we can't use the kotlinter gradle plugin here AND use our custom rules -val ktlint by configurations.creating { - attributes { - attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) - } -} +val ktlint by configurations.creating dependencies { + ktlint(libs.ktlint.cli) { + attributes { + attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL)) + } + } ktlint(project(":ktlint-rules")) } @@ -60,19 +60,18 @@ val lintPaths = listOf( ) tasks.register("ktlint") { + group = LifecycleBasePlugin.VERIFICATION_GROUP description = "Check Kotlin code style." - group = "Verification" - classpath = configurations.getByName("ktlint") + classpath = ktlint mainClass.set("com.pinterest.ktlint.Main") args = lintPaths - jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") } tasks.register("ktlintFormat") { + group = LifecycleBasePlugin.VERIFICATION_GROUP description = "Auto fix Kotlin code style violations" - group = "formatting" - classpath = configurations.getByName("ktlint") + classpath = ktlint mainClass.set("com.pinterest.ktlint.Main") args = listOf("-F") + lintPaths - jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") + jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") } diff --git a/ktlint-rules/build.gradle.kts b/ktlint-rules/build.gradle.kts index 04da70a..9da2d86 100644 --- a/ktlint-rules/build.gradle.kts +++ b/ktlint-rules/build.gradle.kts @@ -16,9 +16,7 @@ kotlin { sourceSets { main { dependencies { - implementation(libs.ktlint.rule.engine.core) implementation(libs.ktlint.cli.ruleset.core) - implementation(libs.ktlint.cli) } } From c0ac3659c405d65fa0665d979cf2de53fa6f4ca6 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Wed, 26 Jun 2024 12:23:03 -0500 Subject: [PATCH 8/9] jvmArgs change --- .../src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt index 12bb105..6cd17a5 100644 --- a/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt +++ b/build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt @@ -47,6 +47,6 @@ fun Project.configureLinting(lintPaths: List) { classpath = execKtlintClasspath mainClass.set("com.pinterest.ktlint.Main") args = listOf("-F") + lintPaths - jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED") + jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED") } } From 67b3607567542d7644973cf46f8eff620db8fb51 Mon Sep 17 00:00:00 2001 From: Matas Lauzadis Date: Wed, 26 Jun 2024 12:23:12 -0500 Subject: [PATCH 9/9] ignore backing property rule --- .editorconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/.editorconfig b/.editorconfig index 46495f9..47da0e8 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,6 +4,7 @@ ktlint_code_style = intellij_idea # ktlint rules to disable ktlint_standard_no-wildcard-imports = disabled ktlint_standard_filename = disabled +ktlint_standard_backing-property-naming = disabled # enable trailing commas per JetBrains recommendation # (https://kotlinlang.org/docs/coding-conventions.html#trailing-commas)