Gradle: introduce "target" DSL function for single platform plugins

This commit is contained in:
Sergey Rostov
2019-05-17 13:11:26 +03:00
parent b8fd4f56bb
commit 775ed2f9e5
@@ -16,9 +16,11 @@
package org.jetbrains.kotlin.gradle.dsl package org.jetbrains.kotlin.gradle.dsl
import groovy.lang.Closure
import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.internal.plugins.DslObject import org.gradle.api.internal.plugins.DslObject
import org.gradle.util.ConfigureUtil
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
@@ -61,6 +63,8 @@ open class KotlinProjectExtension {
abstract class KotlinSingleTargetExtension : KotlinProjectExtension() { abstract class KotlinSingleTargetExtension : KotlinProjectExtension() {
abstract val target: KotlinTarget abstract val target: KotlinTarget
open fun target(body: Closure<out KotlinTarget>) = ConfigureUtil.configure(body, target)
} }
abstract class KotlinSingleJavaTargetExtension : KotlinSingleTargetExtension() { abstract class KotlinSingleJavaTargetExtension : KotlinSingleTargetExtension() {
@@ -70,16 +74,22 @@ abstract class KotlinSingleJavaTargetExtension : KotlinSingleTargetExtension() {
open class KotlinJvmProjectExtension : KotlinSingleJavaTargetExtension() { open class KotlinJvmProjectExtension : KotlinSingleJavaTargetExtension() {
override lateinit var target: KotlinWithJavaTarget<KotlinJvmOptions> override lateinit var target: KotlinWithJavaTarget<KotlinJvmOptions>
internal set internal set
open fun target(body: KotlinWithJavaTarget<KotlinJvmOptions>.() -> Unit) = target.run(body)
} }
open class Kotlin2JsProjectExtension : KotlinSingleJavaTargetExtension() { open class Kotlin2JsProjectExtension : KotlinSingleJavaTargetExtension() {
override lateinit var target: KotlinWithJavaTarget<KotlinJsOptions> override lateinit var target: KotlinWithJavaTarget<KotlinJsOptions>
internal set internal set
open fun target(body: KotlinWithJavaTarget<KotlinJsOptions>.() -> Unit) = target.run(body)
} }
open class KotlinJsProjectExtension : KotlinSingleTargetExtension() { open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
override lateinit var target: KotlinOnlyTarget<KotlinJsCompilation> override lateinit var target: KotlinOnlyTarget<KotlinJsCompilation>
open fun target(body: KotlinOnlyTarget<KotlinJsCompilation>.() -> Unit) = target.run(body)
@Deprecated( @Deprecated(
"Needed for IDE import using the MPP import mechanism", "Needed for IDE import using the MPP import mechanism",
level = DeprecationLevel.HIDDEN level = DeprecationLevel.HIDDEN
@@ -91,11 +101,15 @@ open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
open class KotlinCommonProjectExtension : KotlinSingleJavaTargetExtension() { open class KotlinCommonProjectExtension : KotlinSingleJavaTargetExtension() {
override lateinit var target: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions> override lateinit var target: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>
internal set internal set
open fun target(body: KotlinWithJavaTarget<KotlinMultiplatformCommonOptions>.() -> Unit) = target.run(body)
} }
open class KotlinAndroidProjectExtension : KotlinSingleTargetExtension() { open class KotlinAndroidProjectExtension : KotlinSingleTargetExtension() {
override lateinit var target: KotlinAndroidTarget override lateinit var target: KotlinAndroidTarget
internal set internal set
open fun target(body: KotlinAndroidTarget.() -> Unit) = target.run(body)
} }
open class ExperimentalExtension { open class ExperimentalExtension {