Skip to content

Commit b4f8ab7

Browse files
authored
Support variable Kotlin and project versions (#201)
1 parent e3ae1a0 commit b4f8ab7

File tree

5 files changed

+38
-23
lines changed

5 files changed

+38
-23
lines changed

build.gradle.kts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
*/
44

55
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
6-
import util.kotlinVersionParsed
76
import util.libs
87

98
plugins {
@@ -46,22 +45,22 @@ apiValidation {
4645
nonPublicMarkers.add(Const.INTERNAL_RPC_API_ANNOTATION)
4746
}
4847

49-
val kotlinVersion: KotlinVersion by extra
48+
val kotlinVersionFull: String by extra
5049

5150
allprojects {
5251
group = "org.jetbrains.kotlinx"
5352
version = rootProject.libs.versions.kotlinx.rpc.get()
5453
}
5554

56-
println("kotlinx.rpc project version: $version, Kotlin version: $kotlinVersion")
55+
println("kotlinx.rpc project version: $version, Kotlin version: $kotlinVersionFull")
5756

5857
// If the prefix of the kPRC version is not Kotlin gradle plugin version – you have a problem :)
5958
// Probably some dependency brings kotlin with the later version.
6059
// To mitigate so, refer to `versions-root/kotlin-version-lookup.json`
6160
// and its usage in `gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts`
62-
val kotlinGPVersion = getKotlinPluginVersion().kotlinVersionParsed()
63-
if (kotlinVersion != kotlinGPVersion) {
64-
error("KGP version mismatch. Project version: $kotlinVersion, KGP version: $kotlinGPVersion")
61+
val kotlinGPVersion = getKotlinPluginVersion()
62+
if (kotlinVersionFull != kotlinGPVersion) {
63+
error("KGP version mismatch. Project version: $kotlinVersionFull, KGP version: $kotlinGPVersion")
6564
}
6665

6766
// necessary for CI js tests

compiler-plugin/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ plugins {
66
alias(libs.plugins.conventions.gradle.doctor)
77
}
88

9-
val kotlinVersion: KotlinVersion by extra
9+
val kotlinVersionFull: String by extra
1010
val rpcVersion: String = libs.versions.kotlinx.rpc.get()
1111

1212
allprojects {
1313
group = "org.jetbrains.kotlinx"
14-
version = "$kotlinVersion-$rpcVersion"
14+
version = "$kotlinVersionFull-$rpcVersion"
1515
}

gradle-conventions-settings/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ configurations.configureEach {
1515
}
1616
}
1717

18-
val kotlinVersion: KotlinVersion by extra
1918
val isLatestKotlinVersion: Boolean by extra
2019

2120
dependencies {

gradle-conventions-settings/src/main/kotlin/settings-conventions.settings.gradle.kts

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ pluginManagement {
1919
fun Path.bufferedReader(
2020
charset: Charset = Charsets.UTF_8,
2121
bufferSize: Int = DEFAULT_BUFFER_SIZE,
22-
vararg options: OpenOption
22+
vararg options: OpenOption,
2323
): BufferedReader {
2424
return BufferedReader(
2525
InputStreamReader(
@@ -32,6 +32,7 @@ fun Path.bufferedReader(
3232

3333
object SettingsConventions {
3434
const val KOTLIN_VERSION_ENV_VAR_NAME = "KOTLIN_VERSION"
35+
const val LIBRARY_VERSION_ENV_VAR_NAME = "LIBRARY_VERSION"
3536
const val EAP_VERSION_ENV_VAR_NAME = "EAP_VERSION"
3637

3738
const val KSP_VERSION_ALIAS = "ksp"
@@ -82,10 +83,18 @@ fun loadLookupTable(rootDir: Path, kotlinVersion: String): Pair<Map<String, Stri
8283
.split("\n")
8384
.takeIf { it.size >= 2 }
8485
?.run {
85-
latest = get(1).substringBefore(',')
86-
when (val versionsRow = singleOrNull { it.startsWith(kotlinVersion) }) {
87-
null -> null
88-
else -> first().asCsvValues() to versionsRow.asCsvValues()
86+
first().asCsvValues() to when (val versionsRow = singleOrNull { it.startsWith(kotlinVersion) }) {
87+
// resolve latest for an unknown version
88+
// considers that unknown versions are too new and not yet added
89+
null -> {
90+
latest = kotlinVersion
91+
get(1).asCsvValues()
92+
}
93+
94+
else -> {
95+
latest = get(1).substringBefore(',')
96+
versionsRow.asCsvValues()
97+
}
8998
}
9099
}
91100
?.takeIf { (keys, values) -> keys.size == values.size }
@@ -156,16 +165,22 @@ fun VersionCatalogBuilder.resolveKotlinVersion(versionCatalog: Map<String, Strin
156165
?: error("Expected to resolve '${SettingsConventions.KOTLIN_VERSION_ALIAS}' version")
157166
}
158167

159-
// Resolves core kotlinx.rpc version (without Kotlin version prefix) from Versions Catalog.
160-
// Updates it with EAP_VERSION suffix of present.
168+
// Resolves a core kotlinx.rpc version (without a Kotlin version prefix) from the Version Catalog.
169+
// Uses LIBRARY_VERSION_ENV_VAR_NAME instead if present
161170
fun VersionCatalogBuilder.resolveLibraryVersion(versionCatalog: Map<String, String>) {
162-
val eapVersion: String = System.getenv(SettingsConventions.EAP_VERSION_ENV_VAR_NAME)
163-
?.let { "-eap-$it" } ?: ""
164-
val libraryCatalogVersion = versionCatalog[SettingsConventions.LIBRARY_CORE_VERSION_ALIAS]
171+
val libraryCoreVersion: String = System.getenv(SettingsConventions.LIBRARY_VERSION_ENV_VAR_NAME)
172+
?: versionCatalog[SettingsConventions.LIBRARY_CORE_VERSION_ALIAS]
165173
?: error("Expected to resolve '${SettingsConventions.LIBRARY_CORE_VERSION_ALIAS}' version")
166-
val libraryCoreVersion = libraryCatalogVersion + eapVersion
167174

168-
version(SettingsConventions.LIBRARY_CORE_VERSION_ALIAS, libraryCoreVersion)
175+
val eapVersion: String = System.getenv(SettingsConventions.EAP_VERSION_ENV_VAR_NAME)
176+
?.let {
177+
when (it){
178+
"SNAPSHOT" -> "-$it"
179+
else -> "-eap-$it"
180+
}
181+
} ?: ""
182+
183+
version(SettingsConventions.LIBRARY_CORE_VERSION_ALIAS, libraryCoreVersion + eapVersion)
169184
}
170185

171186
fun String.kotlinVersionParsed(): KotlinVersion {
@@ -193,11 +208,13 @@ dependencyResolutionManagement {
193208
val isLatestKotlin = latestKotlin == kotlinVersion
194209

195210
extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed()
211+
extra["kotlinVersionFull"] = kotlinVersion
196212
extra["isLatestKotlinVersion"] = isLatestKotlin
197213

198214
gradle.rootProject {
199215
allprojects {
200216
this.extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed()
217+
this.extra["kotlinVersionFull"] = kotlinVersion
201218
this.extra["isLatestKotlinVersion"] = isLatestKotlin
202219
}
203220
}

ksp-plugin/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44

55
import org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode
66

7-
val kotlinVersion: KotlinVersion by extra
7+
val kotlinVersionFull: String by extra
88
val rpcVersion: String = libs.versions.kotlinx.rpc.get()
99

1010
allprojects {
1111
group = "org.jetbrains.kotlinx"
12-
version = "$kotlinVersion-$rpcVersion"
12+
version = "$kotlinVersionFull-$rpcVersion"
1313
}
1414

1515
plugins {

0 commit comments

Comments
 (0)