[Gradle, JS] Remove produceExecutable

This commit is contained in:
Ilya Goncharov
2020-02-26 16:41:33 +03:00
parent 01b44802c8
commit e1920110a2
6 changed files with 37 additions and 68 deletions
@@ -8,11 +8,14 @@
// Old package for compatibility
package org.jetbrains.kotlin.gradle.plugin.mpp
import org.gradle.util.WrapUtil
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilationWithResources
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.*
@@ -21,6 +24,13 @@ open class KotlinJsCompilation(
target: KotlinTarget,
name: String
) : AbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(target, name), KotlinCompilationWithResources<KotlinJsOptions> {
internal val binaries: KotlinJsBinaryContainer =
target.project.objects.newInstance(
KotlinJsBinaryContainer::class.java,
target,
WrapUtil.toDomainObjectSet(JsBinary::class.java)
)
override val processResourcesTaskName: String
get() = disambiguateName("processResources")
@@ -8,18 +8,19 @@ package org.jetbrains.kotlin.gradle.targets.js
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider
import org.gradle.util.WrapUtil
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
import org.jetbrains.kotlin.gradle.plugin.*
import org.jetbrains.kotlin.gradle.plugin.AbstractKotlinTargetConfigurator.Companion.runTaskNameSuffix
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation.Companion.MAIN_COMPILATION_NAME
import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs
import org.jetbrains.kotlin.gradle.tasks.locateTask
import org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport
@@ -79,17 +80,13 @@ constructor(
}
}
var producingType: KotlinJsProducingType? = null
@Deprecated("Use produceExecutable instead", ReplaceWith("produceExecutable()"))
override val binaries: KotlinJsBinaryContainer
get() {
return irTarget?.binaries
?: project.objects.newInstance(
KotlinJsBinaryContainer::class.java,
this,
WrapUtil.toDomainObjectSet(JsBinary::class.java)
)
irTarget?.let { throw IllegalStateException("Unfortunately you can't use binaries in 'both' mode") }
return compilations.withType(KotlinJsCompilation::class.java)
.named(MAIN_COMPILATION_NAME)
.map { it.binaries }
.get()
}
var irTarget: KotlinJsIrTarget? = null
@@ -150,35 +147,6 @@ constructor(
irTarget?.nodejs(body)
}
override fun produceExecutable() {
produce(KotlinJsProducingType.EXECUTABLE) {
(this as KotlinJsSubTarget).produceExecutable()
}
}
private fun produce(
producingType: KotlinJsProducingType,
producer: KotlinJsSubTargetDsl.() -> Unit = {}
) {
check(this.producingType == null || this.producingType == producingType) {
"Only one producing type supported. Try to set $producingType but previously ${this.producingType} found"
}
this.producingType = producingType
whenBrowserConfigured {
if (this is KotlinBrowserJs) {
producer()
}
}
whenNodejsConfigured {
if (this is KotlinNodeJs) {
producer()
}
}
}
override fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) {
if (browserLazyDelegate.isInitialized()) {
browser(body)
@@ -49,8 +49,6 @@ interface KotlinJsTargetDsl : KotlinTarget {
}
}
fun produceExecutable()
fun useCommonJs()
val binaries: KotlinJsBinaryContainer
@@ -11,10 +11,12 @@ import org.gradle.api.plugins.ExtensionAware
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetWithBinaries
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.DEVELOPMENT
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.PRODUCTION
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
import javax.inject.Inject
@@ -36,20 +38,24 @@ constructor(
fun executable(
compilation: KotlinJsCompilation = defaultCompilation
) {
if (compilation !is KotlinJsIrCompilation) {
project.logger.warn(
"binaries.executable configuration is useless with IR compiler." +
"Use produceExecutable() instead"
)
return
}
(target as KotlinJsSubTargetContainerDsl).whenBrowserConfigured {
(this as KotlinJsIrSubTarget).produceExecutable()
if (target is KotlinJsIrTarget) {
(this as KotlinJsIrSubTarget).produceExecutable()
}
if (target is KotlinJsTarget) {
(this as KotlinJsSubTarget).produceExecutable()
}
}
target.whenNodejsConfigured {
(this as KotlinJsIrSubTarget).produceExecutable()
(target as KotlinJsSubTargetContainerDsl).whenNodejsConfigured {
if (target is KotlinJsIrTarget) {
(this as KotlinJsIrSubTarget).produceExecutable()
}
if (target is KotlinJsTarget) {
(this as KotlinJsSubTarget).produceExecutable()
}
}
compilation.binaries.executableInternal(compilation)
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.api.file.SourceDirectorySet
import org.gradle.util.WrapUtil
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
@@ -17,13 +16,6 @@ class KotlinJsIrCompilation(
name: String
) : KotlinJsCompilation(target, name) {
internal val binaries: KotlinJsBinaryContainer =
target.project.objects.newInstance(
KotlinJsBinaryContainer::class.java,
target,
WrapUtil.toDomainObjectSet(JsBinary::class.java)
)
internal val allSources: MutableSet<SourceDirectorySet> = mutableSetOf()
override fun addSourcesToCompileTask(sourceSet: KotlinSourceSet, addAsCommonSources: Lazy<Boolean>) {
@@ -97,11 +97,6 @@ constructor(
body(nodejs)
}
@Deprecated("Use binaries.executable instead", ReplaceWith("binaries.executable()"))
override fun produceExecutable() {
project.logger.warn("produceExecutable configuration is useless with IR compiler")
}
override fun whenBrowserConfigured(body: KotlinJsBrowserDsl.() -> Unit) {
if (browserLazyDelegate.isInitialized()) {
browser(body)