[Gradle] Implement 'buildNameCompat' and 'buildPathCompat' utilities

^KT-58157 In Progress
This commit is contained in:
Sebastian Sellmair
2023-07-27 16:47:58 +02:00
committed by Space Team
parent f5e946c0b2
commit c174bb9aa9
@@ -7,11 +7,13 @@ package org.jetbrains.kotlin.gradle.utils
import org.gradle.api.Action
import org.gradle.api.Project
import org.gradle.api.artifacts.component.BuildIdentifier
import org.gradle.api.invocation.Gradle
import org.gradle.api.provider.Provider
import org.gradle.api.services.BuildService
import org.gradle.api.services.BuildServiceParameters
import org.gradle.api.services.BuildServiceSpec
import org.gradle.util.GradleVersion
import kotlin.reflect.KClass
val Gradle.projectCacheDir
@@ -32,3 +34,22 @@ internal fun <T : BuildService<P>, P : BuildServiceParameters> Gradle.registerCl
val serviceName = "${serviceClass.simpleName}_${serviceClass.java.classLoader.hashCode()}"
return sharedServices.registerIfAbsent(serviceName, serviceClass.java, configureAction)
}
/**
* Will return the [BuildIdentifier.getName] for older Gradle versions (deprecated),
* and will calculate the 'buildName' from the new 'buildPath' for Gradle versions higher than 8.2
*/
internal val BuildIdentifier.buildNameCompat: String
get() = if (GradleVersion.current() >= GradleVersion.version("8.2"))
if (buildPath == ":") ":" else buildPath.split(":").last()
else @Suppress("DEPRECATION") this.name
/**
* Will return [BuildIdentifier.getBuildPath] for Gradle versions higher than 8.2
* Will calculate the build path from the previously accessible [BuildIdentifier.getName]:
* Note, this calculation will not be correct for nested composite builds!
*/
internal val BuildIdentifier.buildPathCompat: String
get() = if (GradleVersion.current() >= GradleVersion.version("8.2")) buildPath
else @Suppress("DEPRECATION") if (name.startsWith(":")) name else ":$name"