[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.Devtool
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.slf4j.LoggerFactory
import javax.inject.Inject import javax.inject.Inject
private val log = LoggerFactory.getLogger("org.jetbrains.kotlin.gradle.targets.js.ir")
open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
KotlinJsIrSubTarget(target, "browser"), KotlinJsIrSubTarget(target, "browser"),
KotlinJsBrowserDsl { KotlinJsBrowserDsl {
@@ -56,7 +59,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
@ExperimentalDceDsl @ExperimentalDceDsl
override fun dceTask(body: KotlinJsDce.() -> Unit) { 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) { 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.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.* 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.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -43,14 +44,17 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
override val testTaskDescription: String override val testTaskDescription: String
get() = "Run all ${target.name} tests inside browser using karma and webpack" get() = "Run all ${target.name} tests inside browser using karma and webpack"
private val irBrowser: KotlinBrowserJsIr?
get() = target.irTarget?.browser
override fun produceKotlinLibrary() { override fun produceKotlinLibrary() {
super.produceKotlinLibrary() super.produceKotlinLibrary()
target.irTarget?.browser?.produceKotlinLibrary() irBrowser?.produceKotlinLibrary()
} }
override fun produceExecutable() { override fun produceExecutable() {
super.produceExecutable() super.produceExecutable()
target.irTarget?.browser?.produceExecutable() irBrowser?.produceExecutable()
} }
override fun configureDefaultTestFramework(testTask: KotlinJsTest) { override fun configureDefaultTestFramework(testTask: KotlinJsTest) {
@@ -61,20 +65,29 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
override fun runTask(body: KotlinWebpack.() -> Unit) { override fun runTask(body: KotlinWebpack.() -> Unit) {
commonRunConfigurations.add(body) commonRunConfigurations.add(body)
irBrowser?.runTask(body)
} }
@ExperimentalDistributionDsl @ExperimentalDistributionDsl
override fun distribution(body: Distribution.() -> Unit) { override fun distribution(body: Distribution.() -> Unit) {
distribution.body() distribution.body()
target.irTarget?.browser?.distribution(body)
} }
override fun webpackTask(body: KotlinWebpack.() -> Unit) { override fun webpackTask(body: KotlinWebpack.() -> Unit) {
commonWebpackConfigurations.add(body) commonWebpackConfigurations.add(body)
irBrowser?.webpackTask(body)
} }
@ExperimentalDceDsl @ExperimentalDceDsl
override fun dceTask(body: KotlinJsDce.() -> Unit) { override fun dceTask(body: KotlinJsDce.() -> Unit) {
dceConfigurations.add(body) dceConfigurations.add(body)
irBrowser?.dceTask(body)
}
override fun testTask(body: KotlinJsTest.() -> Unit) {
super<KotlinJsSubTarget>.testTask(body)
irBrowser?.testTask(body)
} }
override fun configureMain(compilation: KotlinJsCompilation) { 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.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl 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.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
import javax.inject.Inject import javax.inject.Inject
@@ -20,18 +21,27 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
private val runTaskName = disambiguateCamelCased("run") private val runTaskName = disambiguateCamelCased("run")
private val irNodejs: KotlinNodeJsIr?
get() = target.irTarget?.nodejs
override fun produceKotlinLibrary() { override fun produceKotlinLibrary() {
super.produceKotlinLibrary() super.produceKotlinLibrary()
target.irTarget?.nodejs?.produceKotlinLibrary() irNodejs?.produceKotlinLibrary()
} }
override fun produceExecutable() { override fun produceExecutable() {
super.produceExecutable() super.produceExecutable()
target.irTarget?.nodejs?.produceExecutable() irNodejs?.produceExecutable()
} }
override fun runTask(body: NodeJsExec.() -> Unit) { override fun runTask(body: NodeJsExec.() -> Unit) {
(project.tasks.getByName(runTaskName) as NodeJsExec).body() (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) { override fun configureDefaultTestFramework(testTask: KotlinJsTest) {