[Gradle, JS] Delegates all calls from js target to ir target

This commit is contained in:
Ilya Goncharov
2020-01-28 16:24:27 +03:00
parent 62aa6d01e9
commit ded996aedf
3 changed files with 31 additions and 5 deletions
@@ -20,8 +20,11 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Devtool
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.slf4j.LoggerFactory
import javax.inject.Inject
private val log = LoggerFactory.getLogger("org.jetbrains.kotlin.gradle.targets.js.ir")
open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
KotlinJsIrSubTarget(target, "browser"),
KotlinJsBrowserDsl {
@@ -56,7 +59,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
@ExperimentalDceDsl
override fun dceTask(body: KotlinJsDce.() -> Unit) {
TODO("Not yet implemented")
log.warn("dceTask configuration is useless with IR compiler. Use @JsExport on declarations instead.")
}
override fun configureMain(compilation: KotlinJsIrCompilation) {
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinBrowserJsIr
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -43,14 +44,17 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
override val testTaskDescription: String
get() = "Run all ${target.name} tests inside browser using karma and webpack"
private val irBrowser: KotlinBrowserJsIr?
get() = target.irTarget?.browser
override fun produceKotlinLibrary() {
super.produceKotlinLibrary()
target.irTarget?.browser?.produceKotlinLibrary()
irBrowser?.produceKotlinLibrary()
}
override fun produceExecutable() {
super.produceExecutable()
target.irTarget?.browser?.produceExecutable()
irBrowser?.produceExecutable()
}
override fun configureDefaultTestFramework(testTask: KotlinJsTest) {
@@ -61,20 +65,29 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
override fun runTask(body: KotlinWebpack.() -> Unit) {
commonRunConfigurations.add(body)
irBrowser?.runTask(body)
}
@ExperimentalDistributionDsl
override fun distribution(body: Distribution.() -> Unit) {
distribution.body()
target.irTarget?.browser?.distribution(body)
}
override fun webpackTask(body: KotlinWebpack.() -> Unit) {
commonWebpackConfigurations.add(body)
irBrowser?.webpackTask(body)
}
@ExperimentalDceDsl
override fun dceTask(body: KotlinJsDce.() -> Unit) {
dceConfigurations.add(body)
irBrowser?.dceTask(body)
}
override fun testTask(body: KotlinJsTest.() -> Unit) {
super<KotlinJsSubTarget>.testTask(body)
irBrowser?.testTask(body)
}
override fun configureMain(compilation: KotlinJsCompilation) {
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinNodeJsIr
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import javax.inject.Inject
@@ -20,18 +21,27 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
private val runTaskName = disambiguateCamelCased("run")
private val irNodejs: KotlinNodeJsIr?
get() = target.irTarget?.nodejs
override fun produceKotlinLibrary() {
super.produceKotlinLibrary()
target.irTarget?.nodejs?.produceKotlinLibrary()
irNodejs?.produceKotlinLibrary()
}
override fun produceExecutable() {
super.produceExecutable()
target.irTarget?.nodejs?.produceExecutable()
irNodejs?.produceExecutable()
}
override fun runTask(body: NodeJsExec.() -> Unit) {
(project.tasks.getByName(runTaskName) as NodeJsExec).body()
irNodejs?.runTask(body)
}
override fun testTask(body: KotlinJsTest.() -> Unit) {
super<KotlinJsSubTarget>.testTask(body)
irNodejs?.testTask(body)
}
override fun configureDefaultTestFramework(testTask: KotlinJsTest) {