[kpm] Replace KotlinExternalModelContainer with new Extras implementation
This newly introduced `Extras` shall present a more generic mechanism of attaching data of a given type to any entity.
This commit is contained in:
committed by
Space
parent
c777ecd470
commit
4f4f749c08
+4
-5
@@ -3,17 +3,16 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@file:OptIn(InternalKotlinGradlePluginApi::class)
|
||||
|
||||
package org.jetbrains.kotlin.gradle.android
|
||||
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelKey
|
||||
import org.jetbrains.kotlin.gradle.kpm.KotlinExternalModelSerializer
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinGradleFragment
|
||||
import org.jetbrains.kotlin.tooling.core.extrasKeyOf
|
||||
import java.io.File
|
||||
import java.io.Serializable
|
||||
|
||||
val androidDslKey = KotlinExternalModelKey<AndroidDsl>(KotlinExternalModelSerializer.serializable())
|
||||
internal val androidDslKey = extrasKeyOf<AndroidDsl>()
|
||||
val KotlinGradleFragment.androidDsl: AndroidDsl? get() = this.extras[androidDslKey]
|
||||
|
||||
class AndroidDsl : Serializable {
|
||||
var compileSdk = 0
|
||||
|
||||
+2
-5
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.gradle.android
|
||||
import com.android.build.gradle.internal.publishing.AndroidArtifacts
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.external
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.project
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinDependency.Companion.CLASSPATH_BINARY_TYPE
|
||||
import org.jetbrains.kotlin.gradle.kpm.idea.IdeaKotlinProjectModelBuilder.FragmentConstraint
|
||||
@@ -19,16 +18,14 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinPm20ProjectExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.containingVariants
|
||||
|
||||
@OptIn(ExternalVariantApi::class)
|
||||
val isAndroidFragment = FragmentConstraint { fragment ->
|
||||
fragment.containingVariants.all { variant -> androidDslKey in variant.external }
|
||||
fragment.containingVariants.all { variant -> variant.androidDsl != null }
|
||||
}
|
||||
|
||||
@OptIn(ExternalVariantApi::class)
|
||||
val isAndroidAndJvmSharedFragment = FragmentConstraint constraint@{ fragment ->
|
||||
val variants = fragment.containingVariants
|
||||
if (variants.any { it.platformType != KotlinPlatformType.jvm }) return@constraint false
|
||||
variants.any { androidDslKey in it.external } && variants.any { androidDslKey !in it.external }
|
||||
variants.any { it.androidDsl != null } && variants.any { it.androidDsl == null }
|
||||
}
|
||||
|
||||
@OptIn(ExternalVariantApi::class, InternalKotlinGradlePluginApi::class)
|
||||
|
||||
+1
-3
@@ -17,7 +17,6 @@ import org.gradle.api.attributes.java.TargetJvmEnvironment.TARGET_JVM_ENVIRONMEN
|
||||
import org.gradle.kotlin.dsl.named
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.createExternalJvmVariant
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.external
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.*
|
||||
|
||||
@@ -88,6 +87,5 @@ fun KotlinGradleModule.createKotlinAndroidVariant(androidVariant: BaseVariant) {
|
||||
val androidDsl = AndroidDsl()
|
||||
androidDsl.androidManifest = project.file("AndroidManifest.xml")
|
||||
androidDsl.compileSdk = 23
|
||||
androidCommon.external[androidDslKey] = androidDsl
|
||||
kotlinVariant.external[androidDslKey] = androidDsl
|
||||
kotlinVariant.extras[androidDslKey] = androidDsl
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user