[Gradle] Make ExternalKotlinTargetImpl internal
^KT-54766 Verification Pending
This commit is contained in:
committed by
Space Team
parent
f34875b161
commit
25fe9589b4
+3
-3
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.gradle.kpm.external.ExternalVariantApi
|
||||
import org.jetbrains.kotlin.gradle.kpm.external.project
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.*
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinTargetDescriptor.DecoratedExternalTargetFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinTargetDescriptor.TargetFactory
|
||||
|
||||
@OptIn(ExternalVariantApi::class)
|
||||
fun KotlinMultiplatformExtension.androidTargetPrototype(): PrototypeAndroidTarget {
|
||||
@@ -46,8 +46,8 @@ fun KotlinMultiplatformExtension.androidTargetPrototype(): PrototypeAndroidTarge
|
||||
val androidTarget = createExternalKotlinTarget<PrototypeAndroidTarget> {
|
||||
targetName = "android"
|
||||
platformType = KotlinPlatformType.jvm
|
||||
decoratedExternalTargetFactory = DecoratedExternalTargetFactory { externalTarget ->
|
||||
PrototypeAndroidTarget(externalTarget, PrototypeAndroidDsl(31))
|
||||
targetFactory = TargetFactory { delegate ->
|
||||
PrototypeAndroidTarget(delegate, PrototypeAndroidDsl(31))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-5
@@ -9,19 +9,18 @@ import org.gradle.api.NamedDomainObjectContainer
|
||||
import org.gradle.kotlin.dsl.getByType
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinTarget
|
||||
|
||||
data class PrototypeAndroidDsl(
|
||||
var compileSdk: Int
|
||||
)
|
||||
|
||||
class PrototypeAndroidTarget(
|
||||
private val target: ExternalKotlinTarget,
|
||||
delegate: Delegate,
|
||||
val androidDsl: PrototypeAndroidDsl
|
||||
) : DecoratedExternalKotlinTarget(target) {
|
||||
internal val kotlin = target.project.extensions.getByType<KotlinMultiplatformExtension>()
|
||||
) : DecoratedExternalKotlinTarget(delegate) {
|
||||
internal val kotlin = super.project.extensions.getByType<KotlinMultiplatformExtension>()
|
||||
|
||||
@Suppress("unchecked_cast")
|
||||
override val compilations: NamedDomainObjectContainer<PrototypeAndroidCompilation>
|
||||
get() = target.compilations as NamedDomainObjectContainer<PrototypeAndroidCompilation>
|
||||
get() = super.compilations as NamedDomainObjectContainer<PrototypeAndroidCompilation>
|
||||
}
|
||||
@@ -27,6 +27,7 @@ kotlin.sourceSets.all {
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.plugin.mpp.pm20.AdvancedKotlinGradlePluginApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi")
|
||||
languageSettings.optIn("org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi")
|
||||
}
|
||||
|
||||
|
||||
+7
-3
@@ -11,8 +11,12 @@ import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
|
||||
@ExternalKotlinTargetApi
|
||||
abstract class DecoratedExternalKotlinTarget(
|
||||
internal val delegate: ExternalKotlinTarget
|
||||
abstract class DecoratedExternalKotlinTarget internal constructor(
|
||||
internal val delegate: ExternalKotlinTargetImpl
|
||||
) : KotlinTarget by delegate {
|
||||
internal val logger: Logger = Logging.getLogger("${ExternalKotlinTarget::class.qualifiedName}: $name")
|
||||
constructor(delegate: Delegate) : this(delegate.impl)
|
||||
|
||||
class Delegate internal constructor(internal val impl: ExternalKotlinTargetImpl)
|
||||
|
||||
internal val logger: Logger = Logging.getLogger("${ExternalKotlinTargetImpl::class.qualifiedName}: $name")
|
||||
}
|
||||
+8
-8
@@ -7,19 +7,19 @@ package org.jetbrains.kotlin.gradle.plugin.mpp.external
|
||||
|
||||
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinTargetDescriptor.DecoratedExternalTargetFactory
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinTargetDescriptor.TargetFactory
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
@ExternalKotlinTargetApi
|
||||
interface ExternalKotlinTargetDescriptor<T : DecoratedExternalKotlinTarget> {
|
||||
|
||||
fun interface DecoratedExternalTargetFactory<T : DecoratedExternalKotlinTarget> {
|
||||
fun create(target: ExternalKotlinTarget): T
|
||||
fun interface TargetFactory<T : DecoratedExternalKotlinTarget> {
|
||||
fun create(target: DecoratedExternalKotlinTarget.Delegate): T
|
||||
}
|
||||
|
||||
val targetName: String
|
||||
val platformType: KotlinPlatformType
|
||||
val decoratedExternalTargetFactory: DecoratedExternalTargetFactory<T>
|
||||
val targetFactory: TargetFactory<T>
|
||||
val configure: ((T) -> Unit)?
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ interface ExternalKotlinTargetDescriptor<T : DecoratedExternalKotlinTarget> {
|
||||
interface ExternalKotlinTargetDescriptorBuilder<T : DecoratedExternalKotlinTarget> {
|
||||
var targetName: String
|
||||
var platformType: KotlinPlatformType
|
||||
var decoratedExternalTargetFactory: DecoratedExternalTargetFactory<T>
|
||||
var targetFactory: TargetFactory<T>
|
||||
var configure: ((T) -> Unit)?
|
||||
fun configure(action: (T) -> Unit) = apply {
|
||||
val configure = this.configure
|
||||
@@ -47,13 +47,13 @@ fun <T : DecoratedExternalKotlinTarget> ExternalKotlinTargetDescriptor(
|
||||
private class ExternalKotlinTargetDescriptorBuilderImpl<T : DecoratedExternalKotlinTarget> : ExternalKotlinTargetDescriptorBuilder<T> {
|
||||
override var targetName: String by Delegates.notNull()
|
||||
override var platformType: KotlinPlatformType by Delegates.notNull()
|
||||
override var decoratedExternalTargetFactory: DecoratedExternalTargetFactory<T> by Delegates.notNull()
|
||||
override var targetFactory: TargetFactory<T> by Delegates.notNull()
|
||||
override var configure: ((T) -> Unit)? = null
|
||||
|
||||
fun build(): ExternalKotlinTargetDescriptorImpl<T> = ExternalKotlinTargetDescriptorImpl(
|
||||
targetName = targetName,
|
||||
platformType = platformType,
|
||||
decoratedExternalTargetFactory = decoratedExternalTargetFactory,
|
||||
targetFactory = targetFactory,
|
||||
configure = configure
|
||||
)
|
||||
}
|
||||
@@ -62,7 +62,7 @@ private class ExternalKotlinTargetDescriptorBuilderImpl<T : DecoratedExternalKot
|
||||
private data class ExternalKotlinTargetDescriptorImpl<T : DecoratedExternalKotlinTarget>(
|
||||
override val targetName: String,
|
||||
override val platformType: KotlinPlatformType,
|
||||
override val decoratedExternalTargetFactory: DecoratedExternalTargetFactory<T>,
|
||||
override val targetFactory: TargetFactory<T>,
|
||||
override val configure: ((T) -> Unit)?
|
||||
) : ExternalKotlinTargetDescriptor<T>
|
||||
|
||||
|
||||
+2
-4
@@ -14,15 +14,13 @@ import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.component.SoftwareComponent
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi
|
||||
import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.buildAdhocComponentsFromKotlinVariants
|
||||
|
||||
@ExternalKotlinTargetApi
|
||||
class ExternalKotlinTarget internal constructor(
|
||||
internal class ExternalKotlinTargetImpl internal constructor(
|
||||
override val project: Project,
|
||||
override val targetName: String,
|
||||
override val platformType: KotlinPlatformType,
|
||||
@@ -35,7 +33,7 @@ class ExternalKotlinTarget internal constructor(
|
||||
) : KotlinTarget {
|
||||
|
||||
fun interface ArtifactsTaskLocator {
|
||||
fun locate(target: ExternalKotlinTarget): TaskProvider<out Task>
|
||||
fun locate(target: ExternalKotlinTargetImpl): TaskProvider<out Task>
|
||||
}
|
||||
|
||||
val kotlin = project.multiplatformExtension
|
||||
+3
-3
@@ -20,11 +20,11 @@ fun <T : DecoratedExternalKotlinTarget> KotlinMultiplatformExtension.createExter
|
||||
val defaultConfiguration = project.configurations.maybeCreate(lowerCamelCaseName(descriptor.targetName, "default"))
|
||||
val apiElementsConfiguration = project.configurations.maybeCreate(lowerCamelCaseName(descriptor.targetName, "apiElements"))
|
||||
val runtimeElementsConfiguration = project.configurations.maybeCreate(lowerCamelCaseName(descriptor.targetName, "runtimeElements"))
|
||||
val artifactsTaskLocator = ExternalKotlinTarget.ArtifactsTaskLocator { target ->
|
||||
val artifactsTaskLocator = ExternalKotlinTargetImpl.ArtifactsTaskLocator { target ->
|
||||
target.project.locateOrRegisterTask<Jar>(lowerCamelCaseName(descriptor.targetName, "jar"))
|
||||
}
|
||||
|
||||
val target = ExternalKotlinTarget(
|
||||
val target = ExternalKotlinTargetImpl(
|
||||
project = project,
|
||||
targetName = descriptor.targetName,
|
||||
platformType = descriptor.platformType,
|
||||
@@ -36,7 +36,7 @@ fun <T : DecoratedExternalKotlinTarget> KotlinMultiplatformExtension.createExter
|
||||
artifactsTaskLocator = artifactsTaskLocator
|
||||
)
|
||||
|
||||
val decorated = descriptor.decoratedExternalTargetFactory.create(target)
|
||||
val decorated = descriptor.targetFactory.create(DecoratedExternalKotlinTarget.Delegate(target))
|
||||
target.onCreated()
|
||||
descriptor.configure?.invoke(decorated)
|
||||
targets.add(decorated)
|
||||
|
||||
Reference in New Issue
Block a user