[Gradle, JS] binaries.executable works for JS IR

This commit is contained in:
Ilya Goncharov
2020-02-11 19:56:57 +03:00
parent 3974300f22
commit e2918bf6c8
3 changed files with 24 additions and 26 deletions
@@ -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.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.dsl.* 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.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget 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( private fun produce(
producingType: KotlinJsProducingType, producingType: KotlinJsProducingType,
producer: KotlinJsSubTargetDsl.() -> Unit = {} producer: KotlinJsSubTargetDsl.() -> Unit = {}
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsReportAggregatingTestRun 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.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
@@ -54,6 +55,8 @@ interface KotlinJsTargetDsl : KotlinTarget {
fun useCommonJs() fun useCommonJs()
val binaries: KotlinJsBinaryContainer
val testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun> val testRuns: NamedDomainObjectContainer<KotlinJsReportAggregatingTestRun>
// Need to compatibility when users use KotlinJsCompilation specific in build script // Need to compatibility when users use KotlinJsCompilation specific in build script
@@ -9,7 +9,6 @@ import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.api.Task import org.gradle.api.Task
import org.gradle.util.WrapUtil 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.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType 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.mpp.NativeBinary
import org.jetbrains.kotlin.gradle.plugin.removeJsCompilerSuffix import org.jetbrains.kotlin.gradle.plugin.removeJsCompilerSuffix
import org.jetbrains.kotlin.gradle.targets.js.JsAggregatingExecutionSource 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.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.targets.js.dsl.*
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -51,7 +53,17 @@ constructor(
project.objects.newInstance( project.objects.newInstance(
KotlinJsBinaryContainer::class.java, KotlinJsBinaryContainer::class.java,
this, 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) private val runTaskName get() = lowerCamelCaseName(disambiguationClassifier, runTaskNameSuffix)
@@ -104,32 +116,11 @@ constructor(
} }
override fun produceKotlinLibrary() { override fun produceKotlinLibrary() {
produce(KotlinJsProducingType.KOTLIN_LIBRARY) // do nothing
} }
override fun produceExecutable() { override fun produceExecutable() {
produce(KotlinJsProducingType.EXECUTABLE) { // do nothing
(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()
}
} }
override fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) { override fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) {