[Gradle, JS] Functions in extensions for configure compiler type
This commit is contained in:
+40
-4
@@ -21,13 +21,18 @@ 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.gradle.util.ConfigureUtil
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.JsCompilerType.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
|
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetContainer
|
||||||
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
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrSingleTargetPreset
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
@@ -88,12 +93,43 @@ open class Kotlin2JsProjectExtension : KotlinSingleJavaTargetExtension() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
|
open class KotlinJsProjectExtension : KotlinSingleTargetExtension() {
|
||||||
override lateinit var target: KotlinJsTarget
|
lateinit var irPreset: KotlinJsIrSingleTargetPreset
|
||||||
|
|
||||||
open fun js(body: KotlinJsTarget.() -> Unit) = target.run(body)
|
lateinit var legacyPreset: KotlinJsSingleTargetPreset
|
||||||
|
|
||||||
|
override lateinit var target: KotlinJsTargetDsl
|
||||||
|
|
||||||
|
open fun js(
|
||||||
|
compiler: JsCompilerType = legacy,
|
||||||
|
body: KotlinJsTargetDsl.() -> Unit
|
||||||
|
) {
|
||||||
|
val target = when (compiler) {
|
||||||
|
legacy -> legacyPreset
|
||||||
|
.createTarget("js")
|
||||||
|
ir -> irPreset
|
||||||
|
.createTarget("js")
|
||||||
|
both -> legacyPreset
|
||||||
|
.createTarget(
|
||||||
|
lowerCamelCaseName(
|
||||||
|
"js",
|
||||||
|
legacy.name
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.target = target
|
||||||
|
|
||||||
|
target.project.components.addAll(target.components)
|
||||||
|
|
||||||
|
target.run(body)
|
||||||
|
}
|
||||||
|
|
||||||
|
open fun js(
|
||||||
|
body: KotlinJsTargetDsl.() -> Unit
|
||||||
|
) = js(compiler = legacy, body = body)
|
||||||
|
|
||||||
@Deprecated("Use js instead", ReplaceWith("js(body)"))
|
@Deprecated("Use js instead", ReplaceWith("js(body)"))
|
||||||
open fun target(body: KotlinJsTarget.() -> Unit) = js(body)
|
open fun target(body: KotlinJsTargetDsl.() -> Unit) = js(body)
|
||||||
|
|
||||||
@Deprecated(
|
@Deprecated(
|
||||||
"Needed for IDE import using the MPP import mechanism",
|
"Needed for IDE import using the MPP import mechanism",
|
||||||
|
|||||||
Reference in New Issue
Block a user