Skip to content

Commit ee2f930

Browse files
authored
feat: upgrade ktlint to v1.3.0 (#42)
1 parent 42f729f commit ee2f930

File tree

11 files changed

+51
-47
lines changed

11 files changed

+51
-47
lines changed

.editorconfig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
[*.{kt,kts}]
2+
ktlint_code_style = intellij_idea
3+
24
# ktlint rules to disable
35
ktlint_standard_no-wildcard-imports = disabled
46
ktlint_standard_filename = disabled
7+
ktlint_standard_backing-property-naming = disabled
58

69
# enable trailing commas per JetBrains recommendation
710
# (https://kotlinlang.org/docs/coding-conventions.html#trailing-commas)

build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/dsl/CodeStyle.kt

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ import aws.sdk.kotlin.gradle.util.verifyRootProject
88
import org.gradle.api.Project
99
import org.gradle.api.attributes.Bundling
1010
import org.gradle.api.tasks.JavaExec
11-
import org.gradle.kotlin.dsl.dependencies
12-
import org.gradle.kotlin.dsl.named
13-
import org.gradle.kotlin.dsl.register
11+
import org.gradle.kotlin.dsl.*
12+
import org.gradle.language.base.plugins.LifecycleBasePlugin
1413

1514
/**
1615
* Configure lint rules for the project
@@ -19,36 +18,35 @@ import org.gradle.kotlin.dsl.register
1918
fun Project.configureLinting(lintPaths: List<String>) {
2019
verifyRootProject { "Kotlin SDK lint configuration is expected to be configured on the root project" }
2120

22-
val ktlint = configurations.create("ktlint") {
23-
attributes {
24-
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
25-
}
26-
}
21+
val ktlint by configurations.creating
2722

28-
// TODO - is there anyway to align this with the version from libs.versions.toml in this project/repo
29-
val ktlintVersion = "0.48.1"
3023
dependencies {
31-
ktlint("com.pinterest:ktlint:$ktlintVersion")
24+
val ktlintVersion = "1.3.0"
25+
ktlint("com.pinterest.ktlint:ktlint-cli:$ktlintVersion") {
26+
attributes {
27+
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
28+
}
29+
}
3230
}
3331

3432
// add the buildscript classpath which should pickup our custom ktlint-rules (via runtimeOnly dep on this plugin)
3533
// plus any custom rules added by consumer
36-
val execKtlintClaspath = ktlint + buildscript.configurations.getByName("classpath")
34+
val execKtlintClasspath = ktlint + buildscript.configurations.getByName("classpath")
35+
3736
tasks.register<JavaExec>("ktlint") {
37+
group = LifecycleBasePlugin.VERIFICATION_GROUP
3838
description = "Check Kotlin code style."
39-
group = "Verification"
40-
classpath = execKtlintClaspath
39+
classpath = execKtlintClasspath
4140
mainClass.set("com.pinterest.ktlint.Main")
4241
args = lintPaths
43-
jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
4442
}
4543

4644
tasks.register<JavaExec>("ktlintFormat") {
45+
group = LifecycleBasePlugin.VERIFICATION_GROUP
4746
description = "Auto fix Kotlin code style violations"
48-
group = "formatting"
49-
classpath = execKtlintClaspath
47+
classpath = execKtlintClasspath
5048
mainClass.set("com.pinterest.ktlint.Main")
5149
args = listOf("-F") + lintPaths
52-
jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
50+
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
5351
}
5452
}

build-plugins/build-support/src/main/kotlin/aws/sdk/kotlin/gradle/plugins/artifactsizemetrics/AnalyzeArtifactSizeMetrics.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ internal abstract class AnalyzeArtifactSizeMetrics : DefaultTask() {
103103

104104
val changeHappened = artifactSizeMetrics.values.any { it.delta.isNotaFluctuation() }
105105
val significantChange = artifactSizeMetrics.values.any {
106-
(it.percentage > pluginConfig.significantChangeThresholdPercentage) || // Increase in size above threshold
107-
(it.latestReleaseSize == 0L) // New artifact
106+
// Increase in size above threshold or new artifact
107+
(it.percentage > pluginConfig.significantChangeThresholdPercentage) || (it.latestReleaseSize == 0L)
108108
}
109109

110110
return ArtifactSizeMetricsAnalysis(artifactSizeMetrics, significantChange, changeHappened)

build.gradle.kts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,14 @@ fun propertyOrEnv(propName: String, envName: String): String? {
4444
return findProperty(propName) as? String ?: env[envName]
4545
}
4646

47-
// chicken and egg problem, we can't use the kotlinter gradle plugin here AND use our custom rules
48-
val ktlint by configurations.creating {
49-
attributes {
50-
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
51-
}
52-
}
47+
val ktlint by configurations.creating
5348

5449
dependencies {
55-
ktlint(libs.ktlint)
50+
ktlint(libs.ktlint.cli) {
51+
attributes {
52+
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
53+
}
54+
}
5655
ktlint(project(":ktlint-rules"))
5756
}
5857

@@ -61,19 +60,18 @@ val lintPaths = listOf(
6160
)
6261

6362
tasks.register<JavaExec>("ktlint") {
63+
group = LifecycleBasePlugin.VERIFICATION_GROUP
6464
description = "Check Kotlin code style."
65-
group = "Verification"
66-
classpath = configurations.getByName("ktlint")
65+
classpath = ktlint
6766
mainClass.set("com.pinterest.ktlint.Main")
6867
args = lintPaths
69-
jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
7068
}
7169

7270
tasks.register<JavaExec>("ktlintFormat") {
71+
group = LifecycleBasePlugin.VERIFICATION_GROUP
7372
description = "Auto fix Kotlin code style violations"
74-
group = "formatting"
75-
classpath = configurations.getByName("ktlint")
73+
classpath = ktlint
7674
mainClass.set("com.pinterest.ktlint.Main")
7775
args = listOf("-F") + lintPaths
78-
jvmArgs("--add-opens", "java.base/java.lang=ALL-UNNAMED")
76+
jvmArgs("--add-opens=java.base/java.lang=ALL-UNNAMED")
7977
}

gradle/libs.versions.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
[versions]
2-
ktlint = "0.48.1"
2+
ktlint = "1.3.0"
33
smithy-version = "1.42.0"
44
smithy-gradle-plugin-version = "0.9.0"
55
junit-version = "5.10.1"
66

77
[libraries]
8-
ktlint = { module = "com.pinterest:ktlint", version.ref = "ktlint" }
9-
ktlint-core = { module = "com.pinterest.ktlint:ktlint-core", version.ref = "ktlint" }
8+
ktlint-cli = { module = "com.pinterest.ktlint:ktlint-cli", version.ref = "ktlint" }
9+
ktlint-rule-engine-core = { module = "com.pinterest.ktlint:ktlint-rule-engine-core", version.ref = "ktlint" }
10+
ktlint-cli-ruleset-core = { module = "com.pinterest.ktlint:ktlint-cli-ruleset-core", version.ref = "ktlint" }
1011
ktlint-test = {module = "com.pinterest.ktlint:ktlint-test", version.ref = "ktlint" }
1112
nexusPublishPlugin = { module = "io.github.gradle-nexus:publish-plugin", version = "1.3.0" }
1213
smithy-model = { module = "software.amazon.smithy:smithy-model", version.ref = "smithy-version" }

ktlint-rules/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ kotlin {
1616
sourceSets {
1717
main {
1818
dependencies {
19-
implementation(libs.ktlint.core)
19+
implementation(libs.ktlint.cli.ruleset.core)
2020
}
2121
}
2222

ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CopyrightHeaderRule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
*/
55
package software.aws.ktlint.rules
66

7-
import com.pinterest.ktlint.core.Rule
7+
import com.pinterest.ktlint.rule.engine.core.api.Rule
8+
import com.pinterest.ktlint.rule.engine.core.api.RuleId
89
import org.jetbrains.kotlin.com.intellij.lang.ASTNode
910
import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.PsiCommentImpl
1011
import org.jetbrains.kotlin.lexer.KtTokens
1112
import org.jetbrains.kotlin.psi.stubs.elements.KtFileElementType
1213

13-
class CopyrightHeaderRule : Rule("copyright-header") {
14+
class CopyrightHeaderRule : Rule(RuleId("copyright-header"), About()) {
1415
companion object {
1516
private val header = """
1617
/*

ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/CustomRuleSetProvider.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
*/
55
package software.aws.ktlint.rules
66

7-
import com.pinterest.ktlint.core.RuleProvider
8-
import com.pinterest.ktlint.core.RuleSetProviderV2
7+
import com.pinterest.ktlint.cli.ruleset.core.api.RuleSetProviderV3
8+
import com.pinterest.ktlint.rule.engine.core.api.RuleProvider
9+
import com.pinterest.ktlint.rule.engine.core.api.RuleSetId
910

10-
class CustomRuleSetProvider : RuleSetProviderV2("custom-ktlint-rules", NO_ABOUT) {
11+
class CustomRuleSetProvider : RuleSetProviderV3(RuleSetId("custom-ktlint-rules")) {
1112
override fun getRuleProviders() = setOf(
1213
RuleProvider { CopyrightHeaderRule() },
1314
RuleProvider { ExpressionBodyRule() },

ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/ExpressionBodyRule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
*/
55
package software.aws.ktlint.rules
66

7-
import com.pinterest.ktlint.core.Rule
7+
import com.pinterest.ktlint.rule.engine.core.api.Rule
8+
import com.pinterest.ktlint.rule.engine.core.api.RuleId
89
import org.jetbrains.kotlin.com.intellij.lang.ASTNode
910
import org.jetbrains.kotlin.psi.KtBlockExpression
1011
import org.jetbrains.kotlin.psi.KtNamedFunction
1112
import org.jetbrains.kotlin.psi.KtReturnExpression
1213

13-
class ExpressionBodyRule : Rule("expression-body") {
14+
class ExpressionBodyRule : Rule(RuleId("expression-body"), About()) {
1415
override fun beforeVisitChildNodes(
1516
node: ASTNode,
1617
autoCorrect: Boolean,

ktlint-rules/src/main/kotlin/software/aws/ktlint/rules/MultilineIfElseBlockRule.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
*/
55
package software.aws.ktlint.rules
66

7-
import com.pinterest.ktlint.core.Rule
8-
import com.pinterest.ktlint.core.ast.ElementType
7+
import com.pinterest.ktlint.rule.engine.core.api.ElementType
8+
import com.pinterest.ktlint.rule.engine.core.api.Rule
9+
import com.pinterest.ktlint.rule.engine.core.api.RuleId
910
import org.jetbrains.kotlin.com.intellij.lang.ASTNode
1011

11-
class MultilineIfElseBlockRule : Rule("multiline-if-else-block") {
12+
class MultilineIfElseBlockRule : Rule(RuleId("multiline-if-else-block"), About()) {
1213
override fun beforeVisitChildNodes(
1314
node: ASTNode,
1415
autoCorrect: Boolean,

0 commit comments

Comments
 (0)