From 73dbf6b846ac984f06b807bf36ad2d814f46b0b5 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 21 Aug 2020 15:29:11 +0300 Subject: [PATCH] [Gradle, JS] Add configureLibrary ^KT-41566 fixed --- .../targets/js/ir/KotlinJsBinaryContainer.kt | 24 +++++++++++++++++++ .../targets/js/ir/KotlinJsIrSubTarget.kt | 19 +++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt index de7855b321f..e5636e5b67c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsBinaryContainer.kt @@ -92,6 +92,30 @@ constructor( } ) + // For Groovy DSL + @JvmOverloads + fun library( + compilation: KotlinJsCompilation = defaultCompilation + ): List { + if (target is KotlinJsIrTarget) { + target.whenBrowserConfigured { + (this as KotlinJsIrSubTarget).produceLibrary() + } + + target.whenNodejsConfigured { + (this as KotlinJsIrSubTarget).produceLibrary() + } + + return createBinaries( + compilation = compilation, + jsBinaryType = KotlinJsBinaryType.LIBRARY, + create = ::Library + ) + } + + throw GradleException("Library can be produced only for IR compiler") + } + internal fun getIrBinaries( mode: KotlinJsBinaryMode ): DomainObjectSet = diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt index 960db7c23a4..53cbc6f639f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinJsIrSubTarget.kt @@ -79,6 +79,14 @@ abstract class KotlinJsIrSubTarget( produceExecutable } + private val produceLibrary: Unit by lazy { + configureLibrary() + } + + internal fun produceLibrary() { + produceLibrary + } + override fun testTask(body: KotlinJsTest.() -> Unit) { testRuns.getByName(KotlinTargetWithTests.DEFAULT_TEST_RUN_NAME).executionTask.configure(body) } @@ -176,14 +184,21 @@ abstract class KotlinJsIrSubTarget( private fun configureMain(compilation: KotlinJsIrCompilation) { configureRun(compilation) configureBuild(compilation) - configureLibrary(compilation) } protected abstract fun configureRun(compilation: KotlinJsIrCompilation) protected abstract fun configureBuild(compilation: KotlinJsIrCompilation) - protected fun configureLibrary(compilation: KotlinJsIrCompilation) { + private fun configureLibrary() { + target.compilations.all { compilation -> + if (compilation.isMain()) { + configureLibrary(compilation) + } + } + } + + private fun configureLibrary(compilation: KotlinJsIrCompilation) { val project = compilation.target.project val processResourcesTask = target.project.tasks.named(compilation.processResourcesTaskName)