[Gradle, JS] Configure build and run in one place: configureMain

This commit is contained in:
Ilya Goncharov
2019-10-21 18:53:36 +03:00
parent aca5628622
commit 92c5b9c66e
3 changed files with 11 additions and 36 deletions
@@ -41,8 +41,6 @@ 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 webpackTaskName = disambiguateCamelCased("webpack")
override fun configureDefaultTestFramework(it: KotlinJsTest) { override fun configureDefaultTestFramework(it: KotlinJsTest) {
it.useKarma { it.useKarma {
useChromeHeadless() useChromeHeadless()
@@ -50,11 +48,11 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
override fun runTask(body: KotlinWebpack.() -> Unit) { override fun runTask(body: KotlinWebpack.() -> Unit) {
(project.tasks.getByName(runTaskName) as KotlinWebpack).body() TODO()
} }
override fun webpackTask(body: KotlinWebpack.() -> Unit) { override fun webpackTask(body: KotlinWebpack.() -> Unit) {
(project.tasks.getByName(webpackTaskName) as KotlinWebpack).body() TODO()
} }
@ExperimentalDce @ExperimentalDce
@@ -69,9 +67,9 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
configureBuild(compilation, dceTaskProvider) configureBuild(compilation, dceTaskProvider)
} }
override fun configureRun( private fun configureRun(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
dceTaskProvider: TaskProvider<KotlinJsDceTask>? dceTaskProvider: TaskProvider<KotlinJsDceTask>
) { ) {
val project = compilation.target.project val project = compilation.target.project
@@ -126,9 +124,9 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
} }
override fun configureBuild( private fun configureBuild(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
dceTaskProvider: TaskProvider<KotlinJsDceTask>? dceTaskProvider: TaskProvider<KotlinJsDceTask>
) { ) {
val project = compilation.target.project val project = compilation.target.project
val nodeJs = NodeJsRootPlugin.apply(project.rootProject) val nodeJs = NodeJsRootPlugin.apply(project.rootProject)
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.gradle.api.NamedDomainObjectContainer import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.ExtensionAware
import org.gradle.api.tasks.TaskProvider
import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
@@ -21,7 +20,6 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
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
import org.jetbrains.kotlin.gradle.tasks.KotlinJsDce
import org.jetbrains.kotlin.gradle.tasks.registerTask import org.jetbrains.kotlin.gradle.tasks.registerTask
import org.jetbrains.kotlin.gradle.testing.internal.configureConventions import org.jetbrains.kotlin.gradle.testing.internal.configureConventions
import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry import org.jetbrains.kotlin.gradle.testing.internal.kotlinTestRegistry
@@ -34,9 +32,6 @@ abstract class KotlinJsSubTarget(
val project get() = target.project val project get() = target.project
private val nodeJs = NodeJsRootPlugin.apply(project.rootProject) private val nodeJs = NodeJsRootPlugin.apply(project.rootProject)
val runTaskName = disambiguateCamelCased("run")
val testTaskName = disambiguateCamelCased("test")
abstract val testTaskDescription: String abstract val testTaskDescription: String
final override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsPlatformTestRun> final override lateinit var testRuns: NamedDomainObjectContainer<KotlinJsPlatformTestRun>
@@ -136,14 +131,4 @@ abstract class KotlinJsSubTarget(
} }
protected abstract fun configureMain(compilation: KotlinJsCompilation) protected abstract fun configureMain(compilation: KotlinJsCompilation)
protected abstract fun configureRun(
compilation: KotlinJsCompilation,
dceTaskProvider: TaskProvider<KotlinJsDce>?
)
protected abstract fun configureBuild(
compilation: KotlinJsCompilation,
dceTaskProvider: TaskProvider<KotlinJsDce>?
)
} }
@@ -5,13 +5,11 @@
package org.jetbrains.kotlin.gradle.targets.js.subtargets package org.jetbrains.kotlin.gradle.targets.js.subtargets
import org.gradle.api.tasks.TaskProvider
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.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.tasks.KotlinJsDce
import javax.inject.Inject import javax.inject.Inject
open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) : open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
@@ -20,6 +18,8 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
override val testTaskDescription: String override val testTaskDescription: String
get() = "Run all ${target.name} tests inside nodejs using the builtin test framework" get() = "Run all ${target.name} tests inside nodejs using the builtin test framework"
private val runTaskName = disambiguateCamelCased("run")
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()
} }
@@ -29,24 +29,16 @@ open class KotlinNodeJs @Inject constructor(target: KotlinJsTarget) :
} }
override fun configureMain(compilation: KotlinJsCompilation) { override fun configureMain(compilation: KotlinJsCompilation) {
configureRun(compilation, null) configureRun(compilation)
configureBuild(compilation, null)
} }
override fun configureRun( private fun configureRun(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation
dceTaskProvider: TaskProvider<KotlinJsDce>?
) { ) {
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased("run")) val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased("run"))
target.runTask.dependsOn(runTaskHolder) target.runTask.dependsOn(runTaskHolder)
} }
override fun configureBuild(
compilation: KotlinJsCompilation,
dceTaskProvider: TaskProvider<KotlinJsDce>?
) {
}
override fun configureBuildVariants() { override fun configureBuildVariants() {
} }
} }