Simplify set up of the resources variant in js and native targets

^KT-65540
This commit is contained in:
Timofey Solonin
2024-02-27 10:42:30 +01:00
committed by Space Team
parent 1895e480c5
commit a8266eb20e
3 changed files with 15 additions and 20 deletions
@@ -9,7 +9,9 @@ import org.gradle.api.file.DuplicatesStrategy
import org.gradle.api.tasks.bundling.Zip
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.Companion.kotlinPropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.launch
import org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.DefaultKotlinUsageContext
@@ -23,10 +25,11 @@ import org.jetbrains.kotlin.gradle.tasks.registerTask
// Use KotlinMultiplatformExtension to make sure this usage context is only creatable in MPP
@Suppress("UnusedReceiverParameter")
internal fun KotlinMultiplatformExtension.setUpResourcesVariant(
target: AbstractKotlinTarget,
internal fun AbstractKotlinTarget.setUpResourcesVariant(
compilation: KotlinCompilation<*>,
): DefaultKotlinUsageContext = with(target) {
): DefaultKotlinUsageContext? {
if (project.multiplatformExtensionOrNull == null || !project.kotlinPropertiesProvider.mppResourcesPublication) return null
var targetRegistersResourcesForPublication = false
val resourcesVariant = DefaultKotlinUsageContext(
compilation = compilation,
@@ -89,16 +89,11 @@ constructor(
)
)
if (project.kotlinPropertiesProvider.mppResourcesPublication) {
project.multiplatformExtensionOrNull?.let {
usageContexts.add(
it.setUpResourcesVariant(
this,
mainCompilation
)
)
}
}
usageContexts.addIfNotNull(
setUpResourcesVariant(
mainCompilation
)
)
val result = createKotlinVariant(componentName, mainCompilation, usageContexts)
@@ -83,14 +83,11 @@ abstract class KotlinNativeTarget @Inject constructor(
)
)
if (project.kotlinPropertiesProvider.mppResourcesPublication) {
mutableUsageContexts.add(
project.multiplatformExtension.setUpResourcesVariant(
this,
mainCompilation,
)
mutableUsageContexts.addIfNotNull(
setUpResourcesVariant(
mainCompilation
)
}
)
val result = createKotlinVariant(targetName, mainCompilation, mutableUsageContexts)