[Gradle, JS] Node run task for all binaries
^KT-41566 fixed
This commit is contained in:
+30
-14
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user