[Gradle][KPM] Rename KotlinFragmentNameDisambiguation into KotlinNameDisambiguation

This commit is contained in:
sebastian.sellmair
2021-12-06 10:26:02 +01:00
committed by Space
parent 2a43199287
commit 3002829acf
10 changed files with 26 additions and 19 deletions
@@ -8,6 +8,7 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
typealias KotlinCommonFragmentFactory = KotlinGradleFragmentFactory<KotlinGradleFragmentInternal> typealias KotlinCommonFragmentFactory = KotlinGradleFragmentFactory<KotlinGradleFragmentInternal>
@@ -6,12 +6,12 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
interface KotlinFragmentConfigurationInstantiator { interface KotlinFragmentConfigurationInstantiator {
fun create( fun create(
module: KotlinGradleModule, module: KotlinGradleModule,
names: FragmentNameDisambiguation, names: KotlinNameDisambiguation,
dependencies: KotlinFragmentDependencyConfigurations dependencies: KotlinFragmentDependencyConfigurations
): Configuration ): Configuration
} }
@@ -5,15 +5,15 @@
package org.jetbrains.kotlin.gradle.plugin.mpp.pm20 package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
interface KotlinFragmentDependencyConfigurationsFactory { interface KotlinFragmentDependencyConfigurationsFactory {
fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinFragmentDependencyConfigurations fun create(module: KotlinGradleModule, names: KotlinNameDisambiguation): KotlinFragmentDependencyConfigurations
} }
object DefaultKotlinFragmentDependencyConfigurationsFactory : KotlinFragmentDependencyConfigurationsFactory { object DefaultKotlinFragmentDependencyConfigurationsFactory : KotlinFragmentDependencyConfigurationsFactory {
override fun create(module: KotlinGradleModule, names: FragmentNameDisambiguation): KotlinFragmentDependencyConfigurations { override fun create(module: KotlinGradleModule, names: KotlinNameDisambiguation): KotlinFragmentDependencyConfigurations {
val configurations = module.project.configurations val configurations = module.project.configurations
val apiConfiguration = configurations.maybeCreate(names.disambiguateName("api")) val apiConfiguration = configurations.maybeCreate(names.disambiguateName("api"))
val implementationConfiguration = configurations.maybeCreate(names.disambiguateName("implementation")) val implementationConfiguration = configurations.maybeCreate(names.disambiguateName("implementation"))
@@ -9,6 +9,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
fun <T : KotlinNativeVariantInternal> KotlinNativeVariantFactory( fun <T : KotlinNativeVariantInternal> KotlinNativeVariantFactory(
nativeVariantInstantiator: KotlinNativeVariantInstantiator<T>, nativeVariantInstantiator: KotlinNativeVariantInstantiator<T>,
@@ -10,13 +10,14 @@ import org.gradle.api.attributes.Bundling
import org.gradle.api.attributes.Category import org.gradle.api.attributes.Category
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
interface KotlinApiElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator interface KotlinApiElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator
object DefaultKotlinApiElementsConfigurationInstantiator : KotlinApiElementsConfigurationInstantiator { object DefaultKotlinApiElementsConfigurationInstantiator : KotlinApiElementsConfigurationInstantiator {
override fun create( override fun create(
module: KotlinGradleModule, module: KotlinGradleModule,
names: FragmentNameDisambiguation, names: KotlinNameDisambiguation,
dependencies: KotlinFragmentDependencyConfigurations dependencies: KotlinFragmentDependencyConfigurations
): Configuration { ): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("apiElements")).apply { return module.project.configurations.maybeCreate(names.disambiguateName("apiElements")).apply {
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
@@ -16,7 +17,7 @@ interface KotlinCompileDependenciesConfigurationInstantiator : KotlinFragmentCon
object DefaultKotlinCompileDependenciesConfigurationInstantiator : KotlinCompileDependenciesConfigurationInstantiator { object DefaultKotlinCompileDependenciesConfigurationInstantiator : KotlinCompileDependenciesConfigurationInstantiator {
override fun create( override fun create(
module: KotlinGradleModule, module: KotlinGradleModule,
names: FragmentNameDisambiguation, names: KotlinNameDisambiguation,
dependencies: KotlinFragmentDependencyConfigurations dependencies: KotlinFragmentDependencyConfigurations
): Configuration { ): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("compileDependencies")).apply { return module.project.configurations.maybeCreate(names.disambiguateName("compileDependencies")).apply {
@@ -11,6 +11,7 @@ import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.mpp.isHostSpecificKonanTargetsSet import org.jetbrains.kotlin.gradle.plugin.mpp.isHostSpecificKonanTargetsSet
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.konan.target.KonanTarget
interface KotlinHostSpecificMetadataElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator interface KotlinHostSpecificMetadataElementsConfigurationInstantiator : KotlinFragmentConfigurationInstantiator
@@ -23,7 +24,7 @@ fun DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator(
private object DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator : private object DefaultKotlinHostSpecificMetadataElementsConfigurationInstantiator :
KotlinHostSpecificMetadataElementsConfigurationInstantiator { KotlinHostSpecificMetadataElementsConfigurationInstantiator {
override fun create( override fun create(
module: KotlinGradleModule, names: FragmentNameDisambiguation, dependencies: KotlinFragmentDependencyConfigurations module: KotlinGradleModule, names: KotlinNameDisambiguation, dependencies: KotlinFragmentDependencyConfigurations
): Configuration { ): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("hostSpecificMetadataElements")).apply { return module.project.configurations.maybeCreate(names.disambiguateName("hostSpecificMetadataElements")).apply {
isCanBeResolved = false isCanBeResolved = false
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.pm20.configuration
import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.Configuration
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation import org.jetbrains.kotlin.gradle.utils.addExtendsFromRelation
interface KotlinRuntimeDependenciesConfigurationInstantiator : KotlinFragmentConfigurationInstantiator interface KotlinRuntimeDependenciesConfigurationInstantiator : KotlinFragmentConfigurationInstantiator
@@ -15,7 +16,7 @@ interface KotlinRuntimeDependenciesConfigurationInstantiator : KotlinFragmentCon
object DefaultKotlinRuntimeDependenciesConfigurationInstantiator : KotlinRuntimeDependenciesConfigurationInstantiator { object DefaultKotlinRuntimeDependenciesConfigurationInstantiator : KotlinRuntimeDependenciesConfigurationInstantiator {
override fun create( override fun create(
module: KotlinGradleModule, module: KotlinGradleModule,
names: FragmentNameDisambiguation, names: KotlinNameDisambiguation,
dependencies: KotlinFragmentDependencyConfigurations dependencies: KotlinFragmentDependencyConfigurations
): Configuration { ): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("runtimeDependencies")).apply { return module.project.configurations.maybeCreate(names.disambiguateName("runtimeDependencies")).apply {
@@ -11,13 +11,14 @@ import org.gradle.api.attributes.Category
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.* import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinFragmentModuleCapabilityConfigurator.setModuleCapability import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinFragmentModuleCapabilityConfigurator.setModuleCapability
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.FragmentNameDisambiguation
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.KotlinNameDisambiguation
interface KotlinRuntimeElementsConfigurationFactory : KotlinFragmentConfigurationInstantiator interface KotlinRuntimeElementsConfigurationFactory : KotlinFragmentConfigurationInstantiator
object DefaultKotlinRuntimeElementsConfigurationInstantiator : KotlinRuntimeElementsConfigurationFactory { object DefaultKotlinRuntimeElementsConfigurationInstantiator : KotlinRuntimeElementsConfigurationFactory {
override fun create( override fun create(
module: KotlinGradleModule, module: KotlinGradleModule,
names: FragmentNameDisambiguation, names: KotlinNameDisambiguation,
dependencies: KotlinFragmentDependencyConfigurations dependencies: KotlinFragmentDependencyConfigurations
): Configuration { ): Configuration {
return module.project.configurations.maybeCreate(names.disambiguateName("runtimeElements")).apply { return module.project.configurations.maybeCreate(names.disambiguateName("runtimeElements")).apply {
@@ -12,14 +12,8 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import org.jetbrains.kotlin.project.model.KotlinModule import org.jetbrains.kotlin.project.model.KotlinModule
import org.jetbrains.kotlin.project.model.KotlinModuleFragment import org.jetbrains.kotlin.project.model.KotlinModuleFragment
internal typealias FragmentNameDisambiguation = KotlinFragmentNameDisambiguation
internal fun FragmentNameDisambiguation(module: KotlinModule, fragmentName: String): FragmentNameDisambiguation {
return DefaultKotlinFragmentNameDisambiguation(module, fragmentName)
}
/** /**
* Mechanism for disambiguating/scoping names for a certain fragment. * Mechanism for disambiguating/scoping names for certain entities (e.g. fragments)
* e.g. Certain fragments might want to create a configuration called 'api'. However, the name scope * e.g. Certain fragments might want to create a configuration called 'api'. However, the name scope
* of Gradle configurations is bound to the Gradle project which requires providing different names of mentioned configurations * of Gradle configurations is bound to the Gradle project which requires providing different names of mentioned configurations
* for FragmentFoo and FragmentBar. * for FragmentFoo and FragmentBar.
@@ -36,14 +30,20 @@ internal fun FragmentNameDisambiguation(module: KotlinModule, fragmentName: Stri
* fragmentBar.disambiguateName("api") == "fragmentBarTestApi" * fragmentBar.disambiguateName("api") == "fragmentBarTestApi"
* ``` * ```
*/ */
interface KotlinFragmentNameDisambiguation { interface KotlinNameDisambiguation {
fun disambiguateName(simpleName: String): String fun disambiguateName(simpleName: String): String
} }
/* Default implementation for fragments */
internal fun FragmentNameDisambiguation(module: KotlinModule, fragmentName: String): KotlinNameDisambiguation {
return DefaultKotlinFragmentNameDisambiguation(module, fragmentName)
}
private class DefaultKotlinFragmentNameDisambiguation( private class DefaultKotlinFragmentNameDisambiguation(
private val module: KotlinModule, private val module: KotlinModule,
private val fragmentName: String private val fragmentName: String
) : KotlinFragmentNameDisambiguation { ) : KotlinNameDisambiguation {
override fun disambiguateName(simpleName: String): String { override fun disambiguateName(simpleName: String): String {
return KotlinModuleFragment.disambiguateName(module, fragmentName, simpleName) return KotlinModuleFragment.disambiguateName(module, fragmentName, simpleName)
} }