From e2918bf6c8b2c313071a9bf64051169b2b08f843 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 11 Feb 2020 19:56:57 +0300 Subject: [PATCH] [Gradle, JS] binaries.executable works for JS IR --- .../gradle/targets/js/KotlinJsTarget.kt | 4 ++ .../targets/js/dsl/KotlinJsTargetDsl.kt | 3 ++ .../gradle/targets/js/ir/KotlinJsIrTarget.kt | 43 ++++++++----------- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt index f9d31a36156..8a960c49164 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinJsTarget.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.* import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.targets.js.dsl.* +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget @@ -146,6 +147,9 @@ constructor( } } + override val binaries: KotlinJsBinaryContainer + get() = TODO("Not yet implemented") + private fun produce( producingType: KotlinJsProducingType, producer: KotlinJsSubTargetDsl.() -> Unit = {} diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt index ee07e8f29e7..9ff1ef85880 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dsl/KotlinJsTargetDsl.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun +import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack @@ -54,6 +55,8 @@ interface KotlinJsTargetDsl : KotlinTarget { fun useCommonJs() + val binaries: KotlinJsBinaryContainer + val testRuns: NamedDomainObjectContainer // Need to compatibility when users use KotlinJsCompilation specific in build script diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt index ab4e83926c3..4398ab92c67 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrTarget.kt @@ -9,7 +9,6 @@ import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.Project import org.gradle.api.Task import org.gradle.util.WrapUtil -import org.jetbrains.kotlin.gradle.dsl.KotlinNativeBinaryContainer import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType @@ -20,8 +19,11 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBinary import org.jetbrains.kotlin.gradle.plugin.removeJsCompilerSuffix import org.jetbrains.kotlin.gradle.targets.js.JsAggregatingExecutionSource -import org.jetbrains.kotlin.gradle.targets.js.KotlinJsProducingType import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl +import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.* import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName @@ -51,7 +53,17 @@ constructor( project.objects.newInstance( KotlinJsBinaryContainer::class.java, this, - WrapUtil.toDomainObjectSet(JsBinary::class.java) + WrapUtil.toDomainObjectSet(JsBinary::class.java).apply { + all { + whenBrowserConfigured { + (this as KotlinJsIrSubTarget).produceExecutable() + } + + whenNodejsConfigured { + (this as KotlinJsIrSubTarget).produceExecutable() + } + } + } ) private val runTaskName get() = lowerCamelCaseName(disambiguationClassifier, runTaskNameSuffix) @@ -104,32 +116,11 @@ constructor( } override fun produceKotlinLibrary() { - produce(KotlinJsProducingType.KOTLIN_LIBRARY) + // do nothing } override fun produceExecutable() { - produce(KotlinJsProducingType.EXECUTABLE) { - (this as KotlinJsIrSubTarget).produceExecutable() - } - } - - private fun produce( - producingType: KotlinJsProducingType, - producer: KotlinJsSubTargetDsl.() -> Unit = {} - ) { - check(this.producingType == null || this.producingType == producingType) { - "Only one producing type supported. Try to set $producingType but previously ${this.producingType} found" - } - - this.producingType = producingType - - whenBrowserConfigured { - producer() - } - - whenNodejsConfigured { - producer() - } + // do nothing } override fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) {