Skip to content

Commit 4e9a3cc

Browse files
committed
Ktlint 2.x support
plugin now requires java 17+ and kotlin 2.0+
1 parent 84a7d79 commit 4e9a3cc

19 files changed

Lines changed: 250 additions & 35 deletions

‎plugin/build.gradle.kts‎

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ java {
3030
withJavadocJar()
3131
withSourcesJar()
3232
toolchain {
33-
languageVersion.set(JavaLanguageVersion.of(8))
33+
languageVersion.set(JavaLanguageVersion.of(17))
3434
}
3535
}
3636

@@ -40,9 +40,8 @@ ktlint {
4040

4141
tasks.withType<KotlinCompile> {
4242
compilerOptions {
43-
languageVersion.set(KotlinVersion.KOTLIN_1_8)
44-
apiVersion.set(KotlinVersion.KOTLIN_1_8)
45-
jvmTarget.set(JvmTarget.JVM_1_8)
43+
languageVersion.set(KotlinVersion.KOTLIN_2_0)
44+
apiVersion.set(KotlinVersion.KOTLIN_2_0)
4645
}
4746
}
4847

@@ -51,6 +50,11 @@ dependencies {
5150
compileOnly("com.pinterest.ktlint:ktlint-rule-engine:1.0.0")
5251
compileOnly("com.pinterest.ktlint:ktlint-ruleset-standard:1.0.0")
5352
compileOnly("com.pinterest.ktlint:ktlint-cli-reporter-baseline:1.0.0")
53+
54+
compileOnly("io.github.ktlint.core:ktlint-cli-reporter-core:2.0.0-ALPHA-4")
55+
compileOnly("io.github.ktlint.core:ktlint-rule-engine:2.0.0-ALPHA-4")
56+
compileOnly("io.github.ktlint.core:ktlint-ruleset-standard:2.0.0-ALPHA-4")
57+
compileOnly("io.github.ktlint.core:ktlint-cli-reporter-baseline:2.0.0-ALPHA-4")
5458
compileOnly(libs.kotlin.gradle.plugin)
5559
compileOnly(libs.android.gradle.plugin)
5660
compileOnly(kotlin("stdlib-jdk8"))

‎plugin/gradle.properties‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
org.gradle.parallel=true
2+
org.gradle.
23
org.gradle.configureondemand=false
34
org.gradle.vfs.watch=true
45
# Shadow plugin does not fully support configuration cache: https://github.com/johnrengelman/shadow/issues/687

‎plugin/gradle/libs.versions.toml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22
kotlin = "1.5.31"
33
ktlint = "1.0.0"
44
androidPlugin = "4.1.0"
5-
semver = "1.1.1"
5+
semver = "2.1.0"
66
jgit = "5.13.3.202401111512-r"
77
sl4fj = "2.0.17"
8-
gradleWrapper = "9.1.0"
9-
gradleWrapperSha = "a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806"
8+
gradleWrapper = "9.7.1"
9+
gradleWrapperSha = "acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a"
1010
assertJ = "3.27.4"
1111
commonsIo = "2.17.0"
1212
archUnit = "1.4.0"
1.71 KB
Binary file not shown.

‎plugin/gradle/wrapper/gradle-wrapper.properties‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
3+
distributionSha256Sum=acd53f1edaf02f1a8ff99879f8a34b302661a057d9b063ae9e35b552f804d20a
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
55
networkTimeout=10000
66
validateDistributionUrl=true
77
zipStoreBase=GRADLE_USER_HOME

‎plugin/gradlew‎

Lines changed: 2 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎plugin/gradlew.bat‎

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/Configurations.kt‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ internal fun createKtlintConfiguration(target: Project, extension: KtlintExtensi
3636
dependencies.addAllLater(
3737
oldProp.value(
3838
extension.version.map {
39-
if (SemVer.parse(it) < SemVer(1, 0, 0)) {
39+
val semver = SemVer.parse(it)
40+
if (semver < SemVer(1, 0, 0)) {
4041
target.logger.info("Add dependency: ktlint version $it")
4142
listOf(target.dependencies.create("com.pinterest:ktlint:$it"))
4243
} else {
4344
target.logger.info("Add dependencies: ktlint version $it")
45+
val groupId = if(semver.major > 1) "io.github.ktlint.core" else "com.pinterest.ktlint"
4446
listOf(
45-
target.dependencies.create("com.pinterest.ktlint:ktlint-cli:$it"),
47+
target.dependencies.create("$groupId:ktlint-cli:$it"),
4648
// these transitive deps were introduced in ktlint 1.0, but for some reason not picked up automatically
4749
target.dependencies.create("io.github.oshai:kotlin-logging:5.1.0"),
4850
target.dependencies.create("io.github.detekt.sarif4k:sarif4k:0.5.0")
@@ -68,7 +70,9 @@ internal fun createKtlintRulesetConfiguration(
6870
dependencies.addLater(
6971
target.provider {
7072
val ktlintVersion = extension.version.get()
71-
target.dependencies.create("com.pinterest.ktlint:ktlint-ruleset-standard:$ktlintVersion")
73+
val semver = SemVer.parse(ktlintVersion)
74+
val groupId = if(semver.major > 1) "io.github.ktlint.core" else "com.pinterest.ktlint"
75+
target.dependencies.create("$groupId:ktlint-ruleset-standard:$ktlintVersion")
7276
}
7377
)
7478
}

‎plugin/src/main/kotlin/org/jlleitschuh/gradle/ktlint/KtLintCompatibility.kt‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,28 @@ package org.jlleitschuh.gradle.ktlint
22

33
import net.swiftzer.semver.SemVer
44
import org.gradle.api.GradleException
5+
import org.jlleitschuh.gradle.ktlint.reporter.Ktlint2ReportersProviderV2Loader
56
import org.jlleitschuh.gradle.ktlint.reporter.ReportersLoaderAdapter
67
import org.jlleitschuh.gradle.ktlint.reporter.ReportersProviderV2Loader
78
import org.jlleitschuh.gradle.ktlint.worker.KtLintInvocation100
9+
import org.jlleitschuh.gradle.ktlint.worker.KtLintInvocation2
810
import org.jlleitschuh.gradle.ktlint.worker.KtLintInvocationFactory
911
import java.io.Serializable
1012

1113
internal fun selectInvocation(version: String): KtLintInvocationFactory {
1214
val semVer = SemVer.parse(version)
13-
return if (semVer.major == 0) {
14-
throw GradleException("ktlint $version is incompatible with ktlint-gradle. Please upgrade to 1+")
15-
} else {
16-
KtLintInvocation100
15+
return when (semVer.major) {
16+
0 -> throw GradleException("ktlint $version is incompatible with ktlint-gradle. Please upgrade to 1+")
17+
1 -> KtLintInvocation100
18+
else -> KtLintInvocation2
1719
}
1820
}
1921

2022
internal fun selectReportersLoaderAdapter(version: String): ReportersLoaderAdapter<*, out Serializable, *, *> {
2123
val semVer = SemVer.parse(version)
22-
return if (semVer.major == 0) {
23-
throw GradleException("ktlint $version is incompatible with ktlint-gradle. Please upgrade to 1+")
24-
} else {
25-
ReportersProviderV2Loader()
24+
return when (semVer.major) {
25+
0 -> throw GradleException("ktlint $version is incompatible with ktlint-gradle. Please upgrade to 1+")
26+
1 -> ReportersProviderV2Loader()
27+
else -> Ktlint2ReportersProviderV2Loader()
2628
}
2729
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.jlleitschuh.gradle.ktlint.reporter
2+
3+
import io.github.ktlint.core.cli.reporter.core.api.ReporterProviderV2
4+
import java.io.PrintStream
5+
6+
class Ktlint2ReporterProviderV2ReporterProvider(
7+
val reporterProvider: ReporterProviderV2<*>
8+
) : GenericReporterProvider<Ktlint2ReporterV2Reporter> {
9+
override fun get(outputStream: PrintStream, opt: Map<String, String>): Ktlint2ReporterV2Reporter {
10+
return Ktlint2ReporterV2Reporter(reporterProvider.get(outputStream, opt))
11+
}
12+
13+
override val id: String
14+
get() = reporterProvider.id
15+
}

0 commit comments

Comments
 (0)