diff options
author | Stanislav Erokhin <Stanislav.Erokhin@jetbrains.com> | 2022-08-22 18:00:15 +0200 |
---|---|---|
committer | intellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com> | 2022-09-05 13:46:48 +0000 |
commit | eaee7806fa6e43a13ff62e44a9217aafe2ddbcdd (patch) | |
tree | ce831f5f854d32493e26fa65d1c1e17da4b74a8f | |
parent | aa85a98ac3de5030cfe7a763d3f867a7ed81d40c (diff) | |
download | intellij-kotlin-eaee7806fa6e43a13ff62e44a9217aafe2ddbcdd.tar.gz |
[kt-[213|221]-* ONLY] Cherry-pick the minimal version of the KotlinGradlePluginVersions functionality
In `kt-[213|221]-1.7.20` branches we need this commit so CI builds won't fail with
"unknown argument kotlinGradlePluginVersion"
GitOrigin-RevId: 283566c70aecb761b8fb827c695235cc72aa90b9
4 files changed, 36 insertions, 1 deletions
diff --git a/plugins/kotlin/gradle/gradle-java/tests/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradlePluginVersions.kt b/plugins/kotlin/gradle/gradle-java/tests/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradlePluginVersions.kt new file mode 100644 index 000000000000..975cc4781a7a --- /dev/null +++ b/plugins/kotlin/gradle/gradle-java/tests/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradlePluginVersions.kt @@ -0,0 +1,7 @@ +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.kotlin.idea.codeInsight.gradle + +// minimal version for cherry-pick to the kt-[213|221]-* branches +object KotlinGradlePluginVersions { + val latest = "1.8.0-dev-446" +} diff --git a/plugins/kotlin/util/project-model-updater/resources/model.properties b/plugins/kotlin/util/project-model-updater/resources/model.properties index a4ec503373ba..9358eddc1695 100644 --- a/plugins/kotlin/util/project-model-updater/resources/model.properties +++ b/plugins/kotlin/util/project-model-updater/resources/model.properties @@ -1,2 +1,6 @@ kotlincVersion=1.7.20-Beta-75 + +#This property is effectively unused in kt-[221|213]-1.7.20 branches and needed +#for CI -- i.e. CI builds for 1.7.20 won't fail (because of the new argument for the project model updater) +kotlinGradlePluginVersion=1.8.0-dev-446 kotlincArtifactsMode=MAVEN diff --git a/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt b/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt index d705eddb728a..8216205753b5 100644 --- a/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt +++ b/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/Main.kt @@ -14,13 +14,14 @@ fun main(args: Array<String>) { it.resolve(".idea").isDirectory && !it.resolve("community").isDirectory } val monorepoRoot = communityRoot.resolve("..").takeIf { it.resolve(".idea").isDirectory } + val parsedArgs = Args(defaultArgs + manualArgs) for ((root, isCommunity) in listOf(monorepoRoot to false, communityRoot to true)) { if (root == null) continue - val parsedArgs = Args(defaultArgs + manualArgs) generateProjectModelFiles(root.resolve(".idea"), parsedArgs, isCommunity) patchProjectModelFiles(root.resolve(".idea"), parsedArgs, isCommunity) } + updateLatestGradlePluginVersion(communityRoot, parsedArgs.kotlinGradlePluginVersion) } private fun generateProjectModelFiles(dotIdea: File, args: Args, isCommunity: Boolean) { @@ -88,6 +89,28 @@ private fun patchKotlincLibs(args: Args, isCommunity: Boolean, dotIdea: File) { } } +/** + * Updates the `KotlinGradlePluginVersions.kt` source file to contain the latest [kotlinGradlePluginVersion] in the source code. + * The `KotlinGradlePluginVersions` source file can't directly read the `model.properties` file directly, since + * the project model can be overwritten by the [main] args (see also [GeneratorPreferences.parse]) + * + * kt-[221|213]-* notes: + * In these branches still used the KOTLIN_GRADLE_PLUGIN_VERSION property to set up gradle plugin version for testing, + * but sometimes in new places the KotlinGradlePluginVersion is used. + * + */ +private fun updateLatestGradlePluginVersion(communityRoot: File, kotlinGradlePluginVersion: String) { + val sourceFile = communityRoot.resolve( + "plugins/kotlin/gradle/gradle-java/tests/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradlePluginVersions.kt" + ) + + val updatedFileContent = sourceFile.readText().replace( + Regex("""val latest = .*"""), "val latest = \"$kotlinGradlePluginVersion\"" + ) + + sourceFile.writeText(updatedFileContent) +} + private fun Iterable<String>.toMapOfArgs(): Map<String, String> = associate { arg -> arg.split("=").also { check(it.size == 2) { "All arguments are expected to be key value pairs in 'key=value' format but got '$arg'" } diff --git a/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/impl/Args.kt b/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/impl/Args.kt index 080e762ecc63..50fb2ef4fcce 100644 --- a/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/impl/Args.kt +++ b/plugins/kotlin/util/project-model-updater/src/org/jetbrains/tools/model/updater/impl/Args.kt @@ -8,6 +8,7 @@ class Args(args: Map<String, String>) { private val mutableArgs: MutableMap<String, String> = HashMap(args) val kotlincVersion: String by mapDelegate(mutableArgs) + val kotlinGradlePluginVersion: String by mapDelegate(mutableArgs) val kotlincArtifactsMode: KotlincArtifactsMode by mapDelegate(mutableArgs, KotlincArtifactsMode::valueOf) init { |