[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.Action
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.artifacts.component.BuildIdentifier
import org.gradle.api.invocation.Gradle import org.gradle.api.invocation.Gradle
import org.gradle.api.provider.Provider import org.gradle.api.provider.Provider
import org.gradle.api.services.BuildService import org.gradle.api.services.BuildService
import org.gradle.api.services.BuildServiceParameters import org.gradle.api.services.BuildServiceParameters
import org.gradle.api.services.BuildServiceSpec import org.gradle.api.services.BuildServiceSpec
import org.gradle.util.GradleVersion
import kotlin.reflect.KClass import kotlin.reflect.KClass
val Gradle.projectCacheDir val Gradle.projectCacheDir
@@ -32,3 +34,22 @@ internal fun <T : BuildService<P>, P : BuildServiceParameters> Gradle.registerCl
val serviceName = "${serviceClass.simpleName}_${serviceClass.java.classLoader.hashCode()}" val serviceName = "${serviceClass.simpleName}_${serviceClass.java.classLoader.hashCode()}"
return sharedServices.registerIfAbsent(serviceName, serviceClass.java, configureAction) 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"