Skip to content

Commit 01332a2

Browse files
TapchicomaSpace
authored andcommitted
Support modifying 'setting.gradle.kts' as well.
Test dsl will update 'settings.gradle.kts' with required plugin management block. ^KT-45745 In Progress
1 parent d1bbf66 commit 01332a2

File tree

2 files changed

+101
-18
lines changed

2 files changed

+101
-18
lines changed

libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/projectSetupDefaults.kt

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,79 @@ internal val DEFAULT_GROOVY_SETTINGS_FILE =
1414
repositories {
1515
mavenLocal()
1616
mavenCentral()
17+
google()
18+
gradlePluginPortal()
1719
}
1820
1921
plugins {
2022
id "org.jetbrains.kotlin.jvm" version "${'$'}kotlin_version"
2123
id "org.jetbrains.kotlin.kapt" version "${'$'}kotlin_version"
24+
id "org.jetbrains.kotlin.android" version "${'$'}kotlin_version"
25+
id "org.jetbrains.kotlin.js" version "${'$'}kotlin_version"
26+
id "org.jetbrains.kotlin.multiplatform" version "${'$'}kotlin_version"
27+
id "org.jetbrains.kotlin.test.fixes.android" version "${'$'}kotlin_version"
28+
}
29+
30+
resolutionStrategy {
31+
eachPlugin {
32+
switch (requested.id.id) {
33+
case "com.android.application":
34+
case "com.android.library":
35+
case "com.android.test":
36+
case "com.android.dynamic-feature":
37+
case "com.android.asset-pack":
38+
case "com.android.asset-pack-bundle":
39+
case "com.android.lint":
40+
case "com.android.instantapp":
41+
case "com.android.feature":
42+
useModule("com.android.tools.build:gradle:${'$'}android_tools_version")
43+
break
44+
case "kotlin-dce-js":
45+
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version")
46+
break
47+
}
48+
}
49+
}
50+
}
51+
""".trimIndent()
52+
53+
@Language("kts")
54+
internal val DEFAULT_KOTLIN_SETTINGS_FILE =
55+
"""
56+
pluginManagement {
57+
repositories {
58+
mavenLocal()
59+
mavenCentral()
60+
google()
61+
gradlePluginPortal()
62+
}
63+
64+
val kotlin_version: String by settings
65+
val android_tools_version: String by settings
66+
plugins {
67+
id("org.jetbrains.kotlin.jvm") version kotlin_version
68+
id("org.jetbrains.kotlin.kapt") version kotlin_version
69+
id("org.jetbrains.kotlin.android") version kotlin_version
70+
id("org.jetbrains.kotlin.js") version kotlin_version
71+
id("org.jetbrains.kotlin.multiplatform") version kotlin_version
72+
id("org.jetbrains.kotlin.test.fixes.android") version kotlin_version
73+
}
74+
75+
resolutionStrategy {
76+
eachPlugin {
77+
when (requested.id.id) {
78+
"com.android.application",
79+
"com.android.library",
80+
"com.android.test",
81+
"com.android.dynamic-feature",
82+
"com.android.asset-pack",
83+
"com.android.asset-pack-bundle",
84+
"com.android.lint",
85+
"com.android.instantapp",
86+
"com.android.feature" -> useModule("com.android.tools.build:gradle:${'$'}android_tools_version")
87+
"kotlin-dce-js" -> useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:${'$'}kotlin_version")
88+
}
89+
}
2290
}
2391
}
2492
""".trimIndent()

libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/testDsl.kt

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -231,26 +231,41 @@ private fun setupProjectFromTestResources(
231231
}
232232

233233
private fun Path.addDefaultBuildFiles() {
234-
if (Files.exists(resolve("build.gradle"))) {
235-
val settingsFile = resolve("settings.gradle")
236-
if (!Files.exists(settingsFile)) {
237-
settingsFile.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE)
238-
} else {
239-
val settingsContent = settingsFile.toFile().readText()
240-
if (!settingsContent
241-
.lines()
242-
.first { !it.startsWith("//") }
243-
.startsWith("pluginManagement {")
244-
) {
245-
settingsFile.toFile().writeText(
246-
"""
247-
$DEFAULT_GROOVY_SETTINGS_FILE
248-
249-
$settingsContent
250-
""".trimIndent()
251-
)
234+
addPluginManagementToSettings()
235+
236+
val buildSrc = resolve("buildSrc")
237+
if (Files.exists(buildSrc)) {
238+
buildSrc.addPluginManagementToSettings()
239+
}
240+
}
241+
242+
internal fun Path.addPluginManagementToSettings() {
243+
val settingsGradle = resolve("settings.gradle")
244+
val settingsGradleKts = resolve("settings.gradle.kts")
245+
when {
246+
Files.exists(settingsGradle) -> settingsGradle.modify {
247+
if (!it.contains("pluginManagement {")) {
248+
"""
249+
|$DEFAULT_GROOVY_SETTINGS_FILE
250+
|
251+
|$it
252+
|""".trimMargin()
253+
} else {
254+
it
255+
}
256+
}
257+
Files.exists(settingsGradleKts) -> settingsGradleKts.modify {
258+
if (!it.contains("pluginManagement {")) {
259+
"""
260+
|$DEFAULT_KOTLIN_SETTINGS_FILE
261+
|
262+
|$it
263+
""".trimMargin()
264+
} else {
265+
it
252266
}
253267
}
268+
else -> settingsGradle.toFile().writeText(DEFAULT_GROOVY_SETTINGS_FILE)
254269
}
255270
}
256271

0 commit comments

Comments
 (0)