[Gradle, JS] generate typescript only if necessary

This commit is contained in:
Ilya Goncharov
2022-10-11 14:34:42 +02:00
committed by Space Team
parent f14d9679e0
commit f6aaf9bf4a
2 changed files with 14 additions and 17 deletions
@@ -36,6 +36,8 @@ sealed class JsIrBinary(
val linkTaskName: String = linkTaskName() val linkTaskName: String = linkTaskName()
var generateTs: Boolean = false
val linkTask: TaskProvider<KotlinJsIrLink> val linkTask: TaskProvider<KotlinJsIrLink>
get() = target.project.tasks get() = target.project.tasks
.withType(KotlinJsIrLink::class.java) .withType(KotlinJsIrLink::class.java)
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec
import org.jetbrains.kotlin.gradle.targets.js.dsl.* import org.jetbrains.kotlin.gradle.targets.js.dsl.*
import org.jetbrains.kotlin.gradle.targets.js.internal.RewriteSourceMapFilterReader import org.jetbrains.kotlin.gradle.targets.js.internal.RewriteSourceMapFilterReader
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.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.typescript.TypeScriptValidationTask import org.jetbrains.kotlin.gradle.targets.js.typescript.TypeScriptValidationTask
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
@@ -161,11 +160,10 @@ constructor(
it.finalizedBy(syncTask) it.finalizedBy(syncTask)
if (tsValidationTask != null) { if (binary.generateTs) {
it.finalizedBy(tsValidationTask) it.finalizedBy(tsValidationTask)
} }
} }
} }
} }
} }
@@ -201,21 +199,17 @@ constructor(
} }
} }
private fun registerTypeScriptCheckTask(binary: JsIrBinary): TaskProvider<TypeScriptValidationTask>? { private fun registerTypeScriptCheckTask(binary: JsIrBinary): TaskProvider<TypeScriptValidationTask> {
val linkTask = binary.linkTask val linkTask = binary.linkTask
val compilation = binary.compilation val compilation = binary.compilation
return if (compilation.name == KotlinCompilation.TEST_COMPILATION_NAME) { return project.registerTask(binary.validateGeneratedTsTaskName, listOf(compilation)) {
null it.inputDir.set(linkTask.flatMap { it.destinationDirectory })
} else { it.validationStrategy.set(
project.registerTask(binary.validateGeneratedTsTaskName, listOf(compilation)) { when (binary.mode) {
it.inputDir.set(linkTask.flatMap { it.destinationDirectory }) KotlinJsBinaryMode.DEVELOPMENT -> propertiesProvider.jsIrGeneratedTypeScriptValidationDevStrategy
it.validationStrategy.set( KotlinJsBinaryMode.PRODUCTION -> propertiesProvider.jsIrGeneratedTypeScriptValidationProdStrategy
when (binary.mode) { }
KotlinJsBinaryMode.DEVELOPMENT -> propertiesProvider.jsIrGeneratedTypeScriptValidationDevStrategy )
KotlinJsBinaryMode.PRODUCTION -> propertiesProvider.jsIrGeneratedTypeScriptValidationProdStrategy
}
)
}
} }
} }
@@ -388,9 +382,10 @@ constructor(
override fun generateTypeScriptDefinitions() { override fun generateTypeScriptDefinitions() {
compilations compilations
.all { .all {
binaries it.binaries
.withType(JsIrBinary::class.java) .withType(JsIrBinary::class.java)
.all { .all {
it.generateTs = true
it.linkTask.configure { linkTask -> it.linkTask.configure { linkTask ->
linkTask.compilerOptions.freeCompilerArgs.add(GENERATE_D_TS) linkTask.compilerOptions.freeCompilerArgs.add(GENERATE_D_TS)
} }