[Gradle, JS] Rename BuildVariantKind on KotlinJsBinaryType

This commit is contained in:
Ilya Goncharov
2020-02-26 17:08:00 +03:00
parent 260015fe0b
commit cf6b76fdee
9 changed files with 41 additions and 51 deletions
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.gradle.logging.kotlinWarn
import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder import org.jetbrains.kotlin.gradle.model.builder.KotlinModelBuilder
import org.jetbrains.kotlin.gradle.plugin.mpp.* import org.jetbrains.kotlin.gradle.plugin.mpp.*
import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin import org.jetbrains.kotlin.gradle.scripting.internal.ScriptingGradleSubplugin
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation 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.KotlinJsIrLink
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
@@ -332,7 +332,7 @@ internal class KotlinJsIrSourceSetProcessor(
private fun registerJsLink( private fun registerJsLink(
project: Project, project: Project,
taskName: String, taskName: String,
type: BuildVariantKind, type: KotlinJsBinaryType,
configureAction: (Kotlin2JsCompile) -> Unit configureAction: (Kotlin2JsCompile) -> Unit
): TaskProvider<out KotlinJsIrLink> { ): TaskProvider<out KotlinJsIrLink> {
return tasksProvider.registerKotlinJsIrTask( return tasksProvider.registerKotlinJsIrTask(
@@ -5,17 +5,7 @@
package org.jetbrains.kotlin.gradle.targets.js.dsl package org.jetbrains.kotlin.gradle.targets.js.dsl
import org.gradle.api.Named enum class KotlinJsBinaryType {
class BuildVariant(private val name: String) : Named {
var kind: BuildVariantKind = BuildVariantKind.PRODUCTION
override fun getName(): String {
return name
}
}
enum class BuildVariantKind {
PRODUCTION, PRODUCTION,
DEVELOPMENT DEVELOPMENT
} }
@@ -9,14 +9,14 @@ import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.plugin.KotlinTarget import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation 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.KotlinJsBinaryType
import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer.Companion.generateBinaryName import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsBinaryContainer.Companion.generateBinaryName
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
sealed class JsBinary( sealed class JsBinary(
internal val compilation: KotlinJsCompilation, internal val compilation: KotlinJsCompilation,
internal val name: String, internal val name: String,
internal val type: BuildVariantKind internal val type: KotlinJsBinaryType
) { ) {
val linkTaskName: String = linkTaskName() val linkTaskName: String = linkTaskName()
@@ -43,7 +43,7 @@ sealed class JsBinary(
class Executable( class Executable(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
name: String, name: String,
type: BuildVariantKind type: KotlinJsBinaryType
) : JsBinary( ) : JsBinary(
compilation, compilation,
name, name,
@@ -102,7 +102,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
} }
if (type == BuildVariantKind.DEVELOPMENT) { if (type == KotlinJsBinaryType.DEVELOPMENT) {
target.runTask.dependsOn(runTask) target.runTask.dependsOn(runTask)
commonRunTask.configure { commonRunTask.configure {
it.dependsOn(runTask) it.dependsOn(runTask)
@@ -166,7 +166,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
} }
if (type == BuildVariantKind.PRODUCTION) { if (type == KotlinJsBinaryType.PRODUCTION) {
assembleTask.dependsOn(webpackTask) assembleTask.dependsOn(webpackTask)
val webpackCommonTask = project.registerTask<Task>( val webpackCommonTask = project.registerTask<Task>(
disambiguateCamelCased(WEBPACK_TASK_NAME) disambiguateCamelCased(WEBPACK_TASK_NAME)
@@ -181,7 +181,7 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
} }
private fun KotlinWebpack.configureOptimization(kind: BuildVariantKind) { private fun KotlinWebpack.configureOptimization(kind: KotlinJsBinaryType) {
mode = getByKind( mode = getByKind(
kind = kind, kind = kind,
releaseValue = Mode.PRODUCTION, releaseValue = Mode.PRODUCTION,
@@ -196,12 +196,12 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
} }
private fun <T> getByKind( private fun <T> getByKind(
kind: BuildVariantKind, kind: KotlinJsBinaryType,
releaseValue: T, releaseValue: T,
debugValue: T debugValue: T
): T = when (kind) { ): T = when (kind) {
BuildVariantKind.PRODUCTION -> releaseValue KotlinJsBinaryType.PRODUCTION -> releaseValue
BuildVariantKind.DEVELOPMENT -> debugValue KotlinJsBinaryType.DEVELOPMENT -> debugValue
} }
companion object { companion object {
@@ -12,9 +12,9 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetWithBinaries import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinTargetWithBinaries
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget 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.KotlinJsBinaryType
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.DEVELOPMENT import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.DEVELOPMENT
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.PRODUCTION import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.PRODUCTION
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetContainerDsl
import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget import org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinJsSubTarget
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
@@ -68,18 +68,18 @@ constructor(
) )
internal fun getBinary( internal fun getBinary(
buildVariantKind: BuildVariantKind type: KotlinJsBinaryType
): JsBinary = ): JsBinary =
matching { it.type == buildVariantKind } matching { it.type == type }
.single() .single()
private fun <T : JsBinary> createBinaries( private fun <T : JsBinary> createBinaries(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
buildVariantKinds: Collection<BuildVariantKind> = listOf(PRODUCTION, DEVELOPMENT), types: Collection<KotlinJsBinaryType> = listOf(PRODUCTION, DEVELOPMENT),
jsBinaryType: JsBinaryType, jsBinaryType: JsBinaryType,
create: (compilation: KotlinJsCompilation, name: String, buildVariantKind: BuildVariantKind) -> T create: (compilation: KotlinJsCompilation, name: String, type: KotlinJsBinaryType) -> T
) { ) {
buildVariantKinds.forEach { buildVariantKind -> types.forEach { buildVariantKind ->
val name = generateBinaryName( val name = generateBinaryName(
compilation, compilation,
buildVariantKind, buildVariantKind,
@@ -102,12 +102,12 @@ constructor(
companion object { companion object {
internal fun generateBinaryName( internal fun generateBinaryName(
compilation: KotlinJsCompilation, compilation: KotlinJsCompilation,
buildVariantKind: BuildVariantKind, type: KotlinJsBinaryType,
jsBinaryType: JsBinaryType? jsBinaryType: JsBinaryType?
) = ) =
lowerCamelCaseName( lowerCamelCaseName(
compilation.name.let { if (it == KotlinCompilation.MAIN_COMPILATION_NAME) null else it }, compilation.name.let { if (it == KotlinCompilation.MAIN_COMPILATION_NAME) null else it },
buildVariantKind.name.toLowerCase(), type.name.toLowerCase(),
jsBinaryType?.name?.toLowerCase() jsBinaryType?.name?.toLowerCase()
) )
} }
@@ -11,9 +11,9 @@ import org.gradle.api.tasks.*
import org.gradle.api.tasks.incremental.IncrementalTaskInputs import org.gradle.api.tasks.incremental.IncrementalTaskInputs
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions import org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.DEVELOPMENT import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.DEVELOPMENT
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind.PRODUCTION import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType.PRODUCTION
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.newFileProperty import org.jetbrains.kotlin.gradle.utils.newFileProperty
import java.io.File import java.io.File
@@ -21,7 +21,7 @@ import java.io.File
@CacheableTask @CacheableTask
open class KotlinJsIrLink : Kotlin2JsCompile() { open class KotlinJsIrLink : Kotlin2JsCompile() {
@Input @Input
lateinit var type: BuildVariantKind lateinit var type: KotlinJsBinaryType
// Not check sources, only klib module // Not check sources, only klib module
@Internal @Internal
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests import org.jetbrains.kotlin.gradle.plugin.KotlinTargetWithTests
import org.jetbrains.kotlin.gradle.plugin.whenEvaluated import org.jetbrains.kotlin.gradle.plugin.whenEvaluated
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun import org.jetbrains.kotlin.gradle.targets.js.KotlinJsPlatformTestRun
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsSubTargetDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.NpmResolverPlugin
@@ -91,7 +91,7 @@ abstract class KotlinJsIrSubTarget(
testJs.description = testTaskDescription testJs.description = testTaskDescription
val testExecutableTask = compilation.binaries.getBinary( val testExecutableTask = compilation.binaries.getBinary(
BuildVariantKind.DEVELOPMENT KotlinJsBinaryType.DEVELOPMENT
).linkTask ).linkTask
testJs.inputFileProperty.set( testJs.inputFileProperty.set(
@@ -6,7 +6,7 @@
package org.jetbrains.kotlin.gradle.targets.js.ir package org.jetbrains.kotlin.gradle.targets.js.ir
import org.gradle.language.base.plugins.LifecycleBasePlugin import org.gradle.language.base.plugins.LifecycleBasePlugin
import org.jetbrains.kotlin.gradle.targets.js.dsl.BuildVariantKind import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryType
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsNodeDsl
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
@@ -31,7 +31,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureRun( override fun configureRun(
compilation: KotlinJsIrCompilation compilation: KotlinJsIrCompilation
) { ) {
val developmentExecutable = compilation.binaries.getBinary(BuildVariantKind.DEVELOPMENT) val developmentExecutable = compilation.binaries.getBinary(KotlinJsBinaryType.DEVELOPMENT)
val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) { val runTaskHolder = NodeJsExec.create(compilation, disambiguateCamelCased(RUN_TASK_NAME)) {
inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() }) inputFileProperty.set(developmentExecutable.linkTask.map { it.outputFileProperty.get() })
@@ -42,7 +42,7 @@ open class KotlinNodeJsIr @Inject constructor(target: KotlinJsIrTarget) :
override fun configureBuild( override fun configureBuild(
compilation: KotlinJsIrCompilation compilation: KotlinJsIrCompilation
) { ) {
val productionExecutable = compilation.binaries.getBinary(BuildVariantKind.PRODUCTION) val productionExecutable = compilation.binaries.getBinary(KotlinJsBinaryType.PRODUCTION)
val assembleTask = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME) val assembleTask = project.tasks.getByName(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)
assembleTask.dependsOn(productionExecutable.linkTask) assembleTask.dependsOn(productionExecutable.linkTask)
@@ -116,7 +116,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
it.outputs.upToDateWhen { false } it.outputs.upToDateWhen { false }
when (type) { when (type) {
BuildVariantKind.PRODUCTION -> { KotlinJsBinaryType.PRODUCTION -> {
// Breaking of Task Configuration Avoidance is not so critical // Breaking of Task Configuration Avoidance is not so critical
// because this task is dependent on DCE task // because this task is dependent on DCE task
it.entry = dceTaskProvider.get() it.entry = dceTaskProvider.get()
@@ -125,7 +125,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
it.resolveFromModulesFirst = true it.resolveFromModulesFirst = true
it.dependsOn(dceTaskProvider) it.dependsOn(dceTaskProvider)
} }
BuildVariantKind.DEVELOPMENT -> { KotlinJsBinaryType.DEVELOPMENT -> {
it.dependsOn(compileKotlinTask) it.dependsOn(compileKotlinTask)
} }
} }
@@ -135,7 +135,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
} }
if (type == BuildVariantKind.DEVELOPMENT) { if (type == KotlinJsBinaryType.DEVELOPMENT) {
target.runTask.dependsOn(runTask) target.runTask.dependsOn(runTask)
commonRunTask.configure { commonRunTask.configure {
it.dependsOn(runTask) it.dependsOn(runTask)
@@ -199,7 +199,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
it.destinationDirectory = distribution.directory it.destinationDirectory = distribution.directory
when (type) { when (type) {
BuildVariantKind.PRODUCTION -> { KotlinJsBinaryType.PRODUCTION -> {
// Breaking of Task Configuration Avoidance is not so critical // Breaking of Task Configuration Avoidance is not so critical
// because this task is dependent on DCE task // because this task is dependent on DCE task
it.entry = dceTaskProvider.get() it.entry = dceTaskProvider.get()
@@ -208,7 +208,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
it.resolveFromModulesFirst = true it.resolveFromModulesFirst = true
it.dependsOn(dceTaskProvider) it.dependsOn(dceTaskProvider)
} }
BuildVariantKind.DEVELOPMENT -> { KotlinJsBinaryType.DEVELOPMENT -> {
it.dependsOn(compileKotlinTask) it.dependsOn(compileKotlinTask)
} }
} }
@@ -218,7 +218,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
} }
if (type == BuildVariantKind.PRODUCTION) { if (type == KotlinJsBinaryType.PRODUCTION) {
assembleTask.dependsOn(webpackTask) assembleTask.dependsOn(webpackTask)
val webpackCommonTask = project.registerTask<Task>( val webpackCommonTask = project.registerTask<Task>(
disambiguateCamelCased(WEBPACK_TASK_NAME) disambiguateCamelCased(WEBPACK_TASK_NAME)
@@ -262,7 +262,7 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
} }
private fun KotlinWebpack.configureOptimization(kind: BuildVariantKind) { private fun KotlinWebpack.configureOptimization(kind: KotlinJsBinaryType) {
mode = getByKind( mode = getByKind(
kind = kind, kind = kind,
releaseValue = Mode.PRODUCTION, releaseValue = Mode.PRODUCTION,
@@ -277,12 +277,12 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
} }
private fun <T> getByKind( private fun <T> getByKind(
kind: BuildVariantKind, kind: KotlinJsBinaryType,
releaseValue: T, releaseValue: T,
debugValue: T debugValue: T
): T = when (kind) { ): T = when (kind) {
BuildVariantKind.PRODUCTION -> releaseValue KotlinJsBinaryType.PRODUCTION -> releaseValue
BuildVariantKind.DEVELOPMENT -> debugValue KotlinJsBinaryType.DEVELOPMENT -> debugValue
} }
companion object { companion object {