Support modifying 'setting.gradle.kts' as well.

Test dsl will update 'settings.gradle.kts' with required plugin
management block.

^KT-45745 In Progress
This commit is contained in:
Yahor Berdnikau
2021-12-01 17:58:11 +01:00
committed by Space
parent ea060dcf8a
commit 40489e9b8d
2 changed files with 65 additions and 22 deletions
@@ -24,6 +24,7 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
id "org.jetbrains.kotlin.android" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.js" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.multiplatform" version "${'$'}kotlin_version"
id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}kotlin_version"
}
resolutionStrategy {
@@ -48,3 +49,44 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
}
}
""".trimIndent()
@Language("kts")
internal val DEFAULT_KOTLIN_SETTINGS_FILE =
"""
pluginManagement {
repositories {
mavenLocal()
mavenCentral()
google()
gradlePluginPortal()
}
val kotlin_version: String by settings
val android_tools_version: String by settings
plugins {
id("org.jetbrains.kotlin.jvm") version kotlin_version
id("org.jetbrains.kotlin.kapt") version kotlin_version
id("org.jetbrains.kotlin.android") version kotlin_version
id("org.jetbrains.kotlin.js") version kotlin_version
id("org.jetbrains.kotlin.multiplatform") version kotlin_version
id("org.jetbrains.kotlin.test.fixes.android") version kotlin_version
}
resolutionStrategy {
eachPlugin {
when (requested.id.id) {
"com.android.application",
"com.android.library",
"com.android.test",
"com.android.dynamic-feature",
"com.android.asset-pack",
"com.android.asset-pack-bundle",
"com.android.lint",
"com.android.instantapp",
"com.android.feature" -> useModule("com.android.tools.build:gradle:${'$'}android_tools_version")
"kotlin-dce-js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version")
}
}
}
}
""".trimIndent()
@@ -290,32 +290,33 @@ private fun Path.addDefaultBuildFiles() {
}
}
private fun Path.addPluginManagementToSettings() {
internal fun Path.addPluginManagementToSettings() {
val settingsGradle = resolve("settings.gradle")
val settingsGradleKts = resolve("settings.gradle.kts")
val fileToUpdate = when {
Files.exists(settingsGradle) -> settingsGradle
Files.exists(settingsGradleKts) -> settingsGradleKts
else -> null
}
if (fileToUpdate == null) {
settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE)
} else {
val settingsContent = fileToUpdate.toFile().readText()
if (!settingsContent
.lines()
.first { !it.startsWith("//") }
.startsWith("pluginManagement {")
) {
fileToUpdate.toFile().writeText(
when {
Files.exists(settingsGradle) -> settingsGradle.modify {
if (!it.contains("pluginManagement {")) {
"""
$DEFAULT_GROOVY_SETTINGS_FILE
$settingsContent
""".trimIndent()
)
|$DEFAULT_GROOVY_SETTINGS_FILE
|
|$it
|""".trimMargin()
} else {
it
}
}
Files.exists(settingsGradleKts) -> settingsGradleKts.modify {
if (!it.contains("pluginManagement {")) {
"""
|$DEFAULT_KOTLIN_SETTINGS_FILE
|
|$it
""".trimMargin()
} else {
it
}
}
else -> settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE)
}
}