[Gradle, JS] Register link tasks
This commit is contained in:
+42
-2
@@ -37,6 +37,8 @@ import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrLink
|
||||
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrType
|
||||
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
||||
import org.jetbrains.kotlin.gradle.tasks.*
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
@@ -343,8 +345,46 @@ internal class KotlinJsIrSourceSetProcessor(
|
||||
project: Project,
|
||||
taskName: String,
|
||||
configureAction: (Kotlin2JsCompile) -> (Unit)
|
||||
): TaskProvider<out Kotlin2JsCompile> =
|
||||
tasksProvider.registerKotlinJSTask(project, taskName, kotlinCompilation, configureAction)
|
||||
): TaskProvider<out Kotlin2JsCompile> {
|
||||
val compilation = kotlinCompilation as KotlinJsIrCompilation
|
||||
|
||||
if (taskName == compilation.productionLinkTaskName) {
|
||||
return registerJsLink(
|
||||
project,
|
||||
taskName,
|
||||
KotlinJsIrType.PRODUCTION,
|
||||
configureAction
|
||||
)
|
||||
}
|
||||
|
||||
if (taskName == compilation.developmentLinkTaskName) {
|
||||
return registerJsLink(
|
||||
project,
|
||||
taskName,
|
||||
KotlinJsIrType.DEVELOPMENT,
|
||||
configureAction
|
||||
)
|
||||
}
|
||||
|
||||
return tasksProvider.registerKotlinJSTask(project, taskName, kotlinCompilation, configureAction)
|
||||
}
|
||||
|
||||
private fun registerJsLink(
|
||||
project: Project,
|
||||
taskName: String,
|
||||
type: KotlinJsIrType,
|
||||
configureAction: (Kotlin2JsCompile) -> Unit
|
||||
): TaskProvider<out KotlinJsIrLink> {
|
||||
return tasksProvider.registerKotlinJsIrTask(
|
||||
project,
|
||||
taskName,
|
||||
KotlinJsIrLink::class.java,
|
||||
kotlinCompilation
|
||||
) { task ->
|
||||
task.type = type
|
||||
configureAction(task)
|
||||
}
|
||||
}
|
||||
|
||||
override fun doTargetSpecificProcessing() {
|
||||
project.tasks.named(kotlinCompilation.compileAllTaskName).configure {
|
||||
|
||||
+15
@@ -100,6 +100,21 @@ internal open class KotlinTasksProvider(val targetName: String) {
|
||||
return result
|
||||
}
|
||||
|
||||
fun <T : Kotlin2JsCompile> registerKotlinJsIrTask(
|
||||
project: Project,
|
||||
name: String,
|
||||
taskClass: Class<out T>,
|
||||
compilation: AbstractKotlinCompilation<*>,
|
||||
configureAction: (T) -> Unit
|
||||
): TaskProvider<out T> {
|
||||
val properties = PropertiesProvider(project)
|
||||
val result = project.registerTask(name, taskClass) {
|
||||
configureAction(it)
|
||||
}
|
||||
configure(result, project, properties, compilation)
|
||||
return result
|
||||
}
|
||||
|
||||
fun registerKotlinCommonTask(
|
||||
project: Project,
|
||||
name: String,
|
||||
|
||||
Reference in New Issue
Block a user