[Gradle, JS] Node run task for all binaries

^KT-41566 fixed
This commit is contained in:
Ilya Goncharov
2020-08-27 17:35:12 +03:00
parent 7dbde459f0
commit 9729554313
@@ -35,26 +35,41 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
compilation: KotlinJsIrCompilation compilation: KotlinJsIrCompilation
) { ) {
compilation.binaries compilation.binaries
.getIrBinaries(KotlinJsBinaryMode.DEVELOPMENT) .withType(JsIrBinary::class.java)
.matching { it is Executable } .matching { it is Executable }
.all { developmentExecutable -> .all { developmentExecutable ->
configureRun(compilation, developmentExecutable) configureRun(developmentExecutable)
} }
} }
private fun configureRun(compilation: KotlinJsIrCompilation, binary: JsIrBinary) { private fun configureRun(binary: JsIrBinary) {
val name = disambiguateCamelCased(RUN_TASK_NAME) val binaryRunName = disambiguateCamelCased(
binary.mode.name.toLowerCase(),
RUN_TASK_NAME
)
locateOrRegisterRunTask(binary, binaryRunName)
if (binary.mode == KotlinJsBinaryMode.DEVELOPMENT) {
val runName = disambiguateCamelCased(
RUN_TASK_NAME
)
locateOrRegisterRunTask(binary, runName)
}
}
private fun locateOrRegisterRunTask(
binary: JsIrBinary,
name: String
) {
val runTask = project.locateTask<NodeJsExec>(name) val runTask = project.locateTask<NodeJsExec>(name)
if (runTask != null) { if (runTask == null) {
return val runTaskHolder = NodeJsExec.create(binary.compilation, name) {
} group = taskGroupName
inputFileProperty.set(binary.linkTask.flatMap { it.outputFileProperty })
}
val runTaskHolder = NodeJsExec.create(compilation, name) { target.runTask.dependsOn(runTaskHolder)
group = taskGroupName
inputFileProperty.set(binary.linkTask.flatMap { it.outputFileProperty })
} }
target.runTask.dependsOn(runTaskHolder)
} }
override fun configureBuild( override fun configureBuild(
@@ -70,11 +85,12 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureLibrary(compilation: KotlinJsIrCompilation) { override fun configureLibrary(compilation: KotlinJsIrCompilation) {
super.configureLibrary(compilation) super.configureLibrary(compilation)
compilation.binaries compilation.binaries
.getIrBinaries(KotlinJsBinaryMode.DEVELOPMENT) .withType(JsIrBinary::class.java)
.matching { it is Library } .matching { it is Library }
.all { binary -> .all { binary ->
configureRun(compilation, binary) configureRun(binary)
} }
} }
} }