Skip to content

Commit e8f491c

Browse files
committed
Enhance Compose version compatibility check to allow lower versions
1 parent 851df51 commit e8f491c

File tree

3 files changed

+11
-5
lines changed

3 files changed

+11
-5
lines changed

build-logic/convention/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ dependencies {
88
compileOnly(libs.kotlin.compose.compiler.plugin)
99
compileOnly(libs.kotlin.gradle.plugin)
1010
compileOnly(libs.kover.plugin)
11+
implementation(libs.semver)
1112
}
1213

1314
gradlePlugin {

build-logic/convention/src/main/kotlin/io/github/composegears/valkyrie/task/CheckComposeVersionCompatibility.kt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.composegears.valkyrie.task
22

3+
import net.swiftzer.semver.SemVer
34
import org.gradle.api.DefaultTask
45
import org.gradle.api.GradleException
56
import org.gradle.api.artifacts.ArtifactCollection
@@ -18,23 +19,25 @@ abstract class CheckComposeVersionCompatibility : DefaultTask() {
1819

1920
@TaskAction
2021
fun checkVersions() {
21-
val expectedVersion = expectedComposeVersion.get()
22+
val maxSupportedVersion = SemVer.parse(expectedComposeVersion.get())
2223

2324
val composeDependencies = artifactCollection.get().artifacts
2425
.mapNotNull { it.id.componentIdentifier as? ModuleComponentIdentifier }
2526
.filter { it.group.startsWith("org.jetbrains.compose") }
2627

27-
val invalidVersions = composeDependencies.filter { it.version != expectedVersion }
28+
val invalidVersions = composeDependencies.filter {
29+
SemVer.parse(it.version) > maxSupportedVersion
30+
}
2831

2932
if (invalidVersions.isNotEmpty()) {
3033
val errorMessage = buildString {
31-
appendLine("Found org.jetbrains.compose dependencies with version != $expectedVersion:")
34+
appendLine("Found Compose dependencies with version > $maxSupportedVersion:")
3235
invalidVersions.forEach {
33-
appendLine(" - ${it.group}:${it.module}:${it.version}")
36+
appendLine("\t- ${it.group}:${it.module}:${it.version}")
3437
}
3538
}
3639
throw GradleException(errorMessage)
3740
}
38-
logger.lifecycle("✅ All compose dependencies have the correct version $expectedVersion")
41+
logger.lifecycle("✅ All compose dependencies have version $maxSupportedVersion or lower")
3942
}
4043
}

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ junit4 = "junit:junit:4.13.2"
3131
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
3232
mockk = "io.mockk:mockk:1.14.6"
3333

34+
semver = "net.swiftzer.semver:semver:2.1.0"
35+
3436
ktlint = "com.pinterest.ktlint:ktlint-cli:1.7.1"
3537
composeRules = "io.nlopez.compose.rules:ktlint:0.4.27"
3638

0 commit comments

Comments
 (0)