[Gradle, JS] Legacy tooling work with binaries and throw error on it
This commit is contained in:
+10
-4
@@ -8,6 +8,7 @@ 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.*
|
||||
@@ -16,8 +17,8 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetComponent
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinBinaryContainer
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.PRIMARY_SINGLE_COMPONENT_NAME
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
|
||||
@@ -27,6 +28,7 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
||||
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.ir.KotlinJsIrTarget
|
||||
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinBrowserJs
|
||||
@@ -45,7 +47,7 @@ constructor(
|
||||
project: Project,
|
||||
platformType: KotlinPlatformType
|
||||
) :
|
||||
KotlinOnlyTarget<KotlinJsCompilation>(project, platformType),
|
||||
KotlinBinaryContainer<KotlinJsCompilation, KotlinJsBinaryContainer>(project, platformType),
|
||||
KotlinTargetWithTests<JsAggregatingExecutionSource, KotlinJsReportAggregatingTestRun>,
|
||||
KotlinJsTargetDsl,
|
||||
KotlinJsSubTargetContainerDsl {
|
||||
@@ -93,8 +95,12 @@ constructor(
|
||||
var producingType: KotlinJsProducingType? = null
|
||||
|
||||
@Deprecated("Use produceExecutable instead", ReplaceWith("produceExecutable()"))
|
||||
override val binaries: KotlinJsBinaryContainer =
|
||||
throw IllegalStateException("binaries is useless for legacy compiler. Use produceExecutable instead")
|
||||
override val binaries: KotlinJsBinaryContainer
|
||||
get() = project.objects.newInstance(
|
||||
KotlinJsBinaryContainer::class.java,
|
||||
this,
|
||||
WrapUtil.toDomainObjectSet(JsBinary::class.java)
|
||||
)
|
||||
|
||||
var irTarget: KotlinJsIrTarget? = null
|
||||
|
||||
|
||||
+13
-6
@@ -11,6 +11,7 @@ import org.gradle.api.plugins.ExtensionAware
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinBinaryContainer
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||
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
|
||||
@@ -22,7 +23,7 @@ import javax.inject.Inject
|
||||
open class KotlinJsBinaryContainer
|
||||
@Inject
|
||||
constructor(
|
||||
val target: KotlinBinaryContainer<KotlinJsIrCompilation, KotlinJsBinaryContainer>,
|
||||
val target: KotlinBinaryContainer<KotlinJsCompilation, KotlinJsBinaryContainer>,
|
||||
backingContainer: DomainObjectSet<JsBinary>
|
||||
) : DomainObjectSet<JsBinary> by backingContainer {
|
||||
val project: Project
|
||||
@@ -30,12 +31,18 @@ constructor(
|
||||
|
||||
private val binaryNames = mutableSetOf<String>()
|
||||
|
||||
private val defaultCompilation: KotlinJsIrCompilation
|
||||
private val defaultCompilation: KotlinJsCompilation
|
||||
get() = target.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME)
|
||||
|
||||
fun executable(
|
||||
compilation: KotlinJsIrCompilation = defaultCompilation
|
||||
compilation: KotlinJsCompilation = defaultCompilation
|
||||
) {
|
||||
if (compilation !is KotlinJsIrCompilation) {
|
||||
throw IllegalArgumentException(
|
||||
"Unable to create executable for $compilation. Use IR compiler (kotlin.js.compiler=true) instead."
|
||||
)
|
||||
}
|
||||
|
||||
(target as KotlinJsSubTargetContainerDsl).whenBrowserConfigured {
|
||||
(this as KotlinJsIrSubTarget).produceExecutable()
|
||||
}
|
||||
@@ -47,7 +54,7 @@ constructor(
|
||||
compilation.binaries.executableInternal(compilation)
|
||||
}
|
||||
|
||||
internal fun executableInternal(compilation: KotlinJsIrCompilation) = createBinaries(
|
||||
internal fun executableInternal(compilation: KotlinJsCompilation) = createBinaries(
|
||||
compilation = compilation,
|
||||
jsBinaryType = JsBinaryType.EXECUTABLE,
|
||||
create = ::Executable
|
||||
@@ -60,7 +67,7 @@ constructor(
|
||||
.single()
|
||||
|
||||
private fun <T : JsBinary> createBinaries(
|
||||
compilation: KotlinJsIrCompilation,
|
||||
compilation: KotlinJsCompilation,
|
||||
buildVariantKinds: Collection<BuildVariantKind> = listOf(PRODUCTION, DEVELOPMENT),
|
||||
jsBinaryType: JsBinaryType,
|
||||
create: (target: KotlinTarget, name: String, buildVariantKind: BuildVariantKind) -> T
|
||||
@@ -87,7 +94,7 @@ constructor(
|
||||
|
||||
companion object {
|
||||
internal fun generateBinaryName(
|
||||
compilation: KotlinJsIrCompilation,
|
||||
compilation: KotlinJsCompilation,
|
||||
buildVariantKind: BuildVariantKind,
|
||||
jsBinaryType: JsBinaryType
|
||||
) =
|
||||
|
||||
Reference in New Issue
Block a user