Simplify cache-redirector script apply method

Now it could be only be applied inside settings file pluginManagement
block. This will update both settings repositories and all projects in
the repo with cache redirection settings.
This commit is contained in:
Yahor Berdnikau
2022-09-23 12:24:16 +02:00
committed by Space
parent 8af5ade2f4
commit c198d4d90d
19 changed files with 178 additions and 224 deletions
@@ -115,7 +115,7 @@ class HierarchicalMppIT : KGPBaseTest() {
fun testDependenciesInTests(gradleVersion: GradleVersion, @TempDir tempDir: Path) {
publishThirdPartyLib(withGranularMetadata = true, gradleVersion = gradleVersion, localRepoDir = tempDir) {
kotlinSourcesDir("jvmMain").copyRecursively(kotlinSourcesDir("linuxX64Main"))
buildGradleKts.appendText("kotlin.linuxX64()")
buildGradleKts.appendText("\nkotlin.linuxX64()")
}
nativeProject(
@@ -406,11 +406,12 @@ class Kotlin2JsGradlePluginIT : AbstractKotlin2JsGradlePluginIT(false) {
}
libBuildscript.appendText(
"""
kotlin.js().browser {
dceTask {
dceOptions.devMode = true
}
}
|
|kotlin.js().browser {
| dceTask {
| dceOptions.devMode = true
| }
|}
""".trimMargin()
)
@@ -228,9 +228,6 @@ class NewMultiplatformIT : BaseGradleIT() {
gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify {
it.replace(Regex("""\.version\(.*\)"""), "")
}
gradleBuildScript(subproject = libProject.projectDir.name).modify {
it.lines().dropLast(5).joinToString(separator = "\n")
}
build(
"clean",
@@ -430,9 +427,6 @@ class NewMultiplatformIT : BaseGradleIT() {
gradleBuildScript(libProjectName).takeIf { it.extension == "kts" }?.modify {
it.replace(Regex("""\.version\(.*\)"""), "")
}
gradleBuildScript(subproject = libProject.projectDir.name).modify {
it.lines().dropLast(5).joinToString(separator = "\n")
}
build(
"clean",
@@ -714,7 +708,7 @@ class NewMultiplatformIT : BaseGradleIT() {
arrayOf(
it + "com/example/lib/TestCommonCode.class",
it + "com/example/lib/TestWithJava.class",
it + "META-INF/new-mpp-lib-with-tests.kotlin_module" // Note: same name as in main
it + "META-INF/new-mpp-lib-with-tests_test.kotlin_module"
)
},
*kotlinClassesDir(sourceSet = "jvmWithoutJava/main").let {
@@ -729,7 +723,7 @@ class NewMultiplatformIT : BaseGradleIT() {
arrayOf(
it + "com/example/lib/TestCommonCode.class",
it + "com/example/lib/TestWithoutJava.class",
it + "META-INF/new-mpp-lib-with-tests.kotlin_module" // Note: same name as in main
it + "META-INF/new-mpp-lib-with-tests_test.kotlin_module"
)
}
)
@@ -1057,9 +1051,6 @@ class NewMultiplatformIT : BaseGradleIT() {
libProject.setupWorkingDir()
libProject.projectDir.copyRecursively(projectDir.resolve(libProject.projectDir.name))
gradleBuildScript(libProject.projectDir.name).modify {
it.lines().dropLast(5).joinToString(separator = "\n")
}
projectDir.resolve("settings.gradle").appendText("\ninclude '${libProject.projectDir.name}'")
gradleBuildScript().modify {
it.replace("'com.example:sample-lib:1.0'", "project(':${libProject.projectDir.name}')") +
@@ -1277,9 +1268,6 @@ class NewMultiplatformIT : BaseGradleIT() {
setupWorkingDir()
appProject.setupWorkingDir(false)
appProject.projectDir.copyRecursively(projectDir.resolve("sample-app"))
gradleBuildScript("sample-app").modify {
it.lines().dropLast(5).joinToString(separator = "\n")
}
gradleSettingsScript().writeText("include 'sample-app'") // disables feature preview 'GRADLE_METADATA', resets rootProject name
gradleBuildScript("sample-app").modify {
@@ -409,16 +409,6 @@ internal fun BaseGradleIT.Project.embedProject(other: BaseGradleIT.Project, rena
} finally {
check(tempDir.deleteRecursively())
}
if (projectName == other.projectName) {
val embeddedModuleDir = projectDir.resolve(embeddedModuleName)
embeddedModuleDir.walk().forEach {
if (it.name.contains("build.gradle")) {
it.modify { string ->
string.lines().dropLast(5).joinToString(separator = "\n")
}
}
}
}
testCase.apply {
gradleSettingsScript().appendText("\ninclude(\"$embeddedModuleName\")")
@@ -1135,6 +1135,10 @@ class GeneralNativeIT : BaseGradleIT() {
""".trimIndent()
)
gradleProperties().modify {
it.replace("cacheRedirectorEnabled=true", "cacheRedirectorEnabled=false")
}
build(
"build",
options = defaultBuildOptions().copy(
@@ -148,13 +148,16 @@ class NativePlatformLibsIT : BaseGradleIT() {
appendText("\nkotlin.native.linkArgs=-Xfoo=bar -Xbaz=qux")
}
gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl)
gradleBuildScript().appendText("""
kotlin.linuxX64() {
binaries.sharedLib {
freeCompilerArgs += "-Xmen=pool"
}
}
""".trimIndent())
gradleBuildScript().appendText(
"""
|
|kotlin.linuxX64() {
| binaries.sharedLib {
| freeCompilerArgs += "-Xmen=pool"
| }
|}
""".trimMargin()
)
build("linkDebugSharedLinuxX64") {
assertSuccessful()
assertTasksExecuted(
@@ -499,15 +499,14 @@ internal fun Path.enableAndroidSdk() {
applyAndroidTestFixes()
}
@OptIn(ExperimentalPathApi::class)
internal fun Path.enableCacheRedirector() {
// Path relative to the current gradle module project dir
val redirectorScript = Paths.get("../../../gradle/cacheRedirector.gradle.kts")
val redirectorScript = Paths.get("../../../repo/scripts/cache-redirector.settings.gradle.kts")
assert(redirectorScript.exists()) {
"$redirectorScript does not exist! Please provide correct path to 'cacheRedirector.gradle.kts' file."
"$redirectorScript does not exist! Please provide correct path to 'cache-redirector.settings.gradle.kts' file."
}
val gradleDir = resolve("gradle").also { it.createDirectories() }
redirectorScript.copyTo(gradleDir.resolve("cacheRedirector.gradle.kts"))
redirectorScript.copyTo(gradleDir.resolve("cache-redirector.settings.gradle.kts"))
val projectCacheRedirectorStatus = Paths
.get("../../../gradle.properties")
@@ -519,45 +518,34 @@ internal fun Path.enableCacheRedirector() {
.also { if (!it.exists()) it.createFile() }
.appendText(
"""
$projectCacheRedirectorStatus
""".trimIndent()
|
|$projectCacheRedirectorStatus
|
""".trimMargin()
)
val projectDir = toFile()
projectDir.walk().forEach {
when (it.name) {
"build.gradle" -> {
it.appendText(
"""
def cacheRedirectorFile = "${'$'}rootDir/gradle/cacheRedirector.gradle.kts"
if (new File(cacheRedirectorFile).exists()) {
apply(from: cacheRedirectorFile)
}
""".trimIndent()
)
}
"build.gradle.kts" -> {
it.appendText(
"""
val cacheRedirectorFile = "${'$'}rootDir/gradle/cacheRedirector.gradle.kts"
if (File(cacheRedirectorFile).exists()) {
apply(from = cacheRedirectorFile)
}
""".trimIndent()
)
}
val settingsGradle = resolve("settings.gradle")
val settingsGradleKts = resolve("settings.gradle.kts")
when {
Files.exists(settingsGradle) -> settingsGradle.modify {
"""
|${it.substringBefore("pluginManagement {")}
|pluginManagement {
| apply from: 'gradle/cache-redirector.settings.gradle.kts'
|${it.substringAfter("pluginManagement {")}
""".trimMargin()
}
Files.exists(settingsGradleKts) -> settingsGradleKts.modify {
"""
|${it.substringBefore("pluginManagement {")}
|pluginManagement {
| apply(from = "gradle/cache-redirector.settings.gradle.kts")
|${it.substringAfter("pluginManagement {")}
""".trimMargin()
}
}
}
@OptIn(ExperimentalPathApi::class)
private fun Path.addHeapDumpOptions() {
val propertiesFile = resolve("gradle.properties")
if (!propertiesFile.exists()) propertiesFile.createFile()