[Gradle, JS] Rename dukatMode to externalsOutputFormat

^KT-42339 fixed
This commit is contained in:
Ilya Goncharov
2020-10-09 12:19:01 +03:00
parent 3ad6d58153
commit b1768d805f
10 changed files with 42 additions and 42 deletions
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.gradle package org.jetbrains.kotlin.gradle
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.util.modify
import org.junit.Test import org.junit.Test
import kotlin.test.assertTrue import kotlin.test.assertTrue
@@ -103,7 +103,7 @@ class DukatIntegrationIT : BaseGradleIT() {
project.setupWorkingDir() project.setupWorkingDir()
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl)
project.gradleProperties().modify { project.gradleProperties().modify {
"${DukatMode.dukatModeProperty}=${DukatMode.SOURCE}" "${ExternalsOutputFormat.externalsOutputFormatProperty}=${ExternalsOutputFormat.SOURCE}"
} }
val externalSrcs = "build/externals/$projectName/src" val externalSrcs = "build/externals/$projectName/src"
@@ -158,7 +158,7 @@ class DukatIntegrationIT : BaseGradleIT() {
project.setupWorkingDir() project.setupWorkingDir()
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl)
project.gradleProperties().modify { project.gradleProperties().modify {
"${DukatMode.dukatModeProperty}=${DukatMode.SOURCE}" "${ExternalsOutputFormat.externalsOutputFormatProperty}=${ExternalsOutputFormat.SOURCE}"
} }
val externalSrcs = "build/externals/$projectName/src" val externalSrcs = "build/externals/$projectName/src"
@@ -233,7 +233,7 @@ class DukatIntegrationIT : BaseGradleIT() {
project.gradleProperties().modify { project.gradleProperties().modify {
""" """
kotlin.js.generate.externals=true kotlin.js.generate.externals=true
${DukatMode.dukatModeProperty}=${DukatMode.SOURCE} ${ExternalsOutputFormat.externalsOutputFormatProperty}=${ExternalsOutputFormat.SOURCE}
""".trimIndent() """.trimIndent()
} }
@@ -262,7 +262,7 @@ class DukatIntegrationIT : BaseGradleIT() {
project.setupWorkingDir() project.setupWorkingDir()
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl)
project.gradleProperties().modify { project.gradleProperties().modify {
"${DukatMode.dukatModeProperty}=${DukatMode.SOURCE}" "${ExternalsOutputFormat.externalsOutputFormatProperty}=${ExternalsOutputFormat.SOURCE}"
} }
val externalSrcs = "build/externals/both-jsIr/src" val externalSrcs = "build/externals/both-jsIr/src"
@@ -346,7 +346,7 @@ class DukatIntegrationIT : BaseGradleIT() {
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl)
project.gradleProperties().modify { project.gradleProperties().modify {
""" """
${DukatMode.dukatModeProperty}=${DukatMode.BINARY} ${ExternalsOutputFormat.externalsOutputFormatProperty}=${ExternalsOutputFormat.BINARY}
""".trimIndent() """.trimIndent()
} }
@@ -376,7 +376,7 @@ class DukatIntegrationIT : BaseGradleIT() {
project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl) project.gradleBuildScript().modify(::transformBuildScriptWithPluginsDsl)
project.gradleProperties().modify { project.gradleProperties().modify {
""" """
${DukatMode.dukatModeProperty}=${DukatMode.SOURCE} ${ExternalsOutputFormat.externalsOutputFormatProperty}=${ExternalsOutputFormat.SOURCE}
""".trimIndent() """.trimIndent()
} }
@@ -13,8 +13,8 @@ import org.jetbrains.kotlin.gradle.plugin.Kotlin2JsPlugin.Companion.NOWARN_2JS_F
import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.Companion.jsCompilerProperty import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.Companion.jsCompilerProperty
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
import org.jetbrains.kotlin.gradle.targets.js.dukat.DukatMode.Companion.dukatModeProperty import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat.Companion.externalsOutputFormatProperty
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
import org.jetbrains.kotlin.gradle.tasks.CacheBuilder import org.jetbrains.kotlin.gradle.tasks.CacheBuilder
@@ -221,8 +221,8 @@ internal class PropertiesProvider private constructor(private val project: Proje
/** /**
* Default mode of generating of Dukat * Default mode of generating of Dukat
*/ */
val dukatMode: DukatMode? val externalsOutputFormat: ExternalsOutputFormat?
get() = property(dukatModeProperty)?.let { DukatMode.byArgumentOrNull(it) } get() = property(externalsOutputFormatProperty)?.let { ExternalsOutputFormat.byArgumentOrNull(it) }
/** /**
* Use Kotlin/JS backend compiler type * Use Kotlin/JS backend compiler type
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
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.dukat.DukatMode import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
import org.jetbrains.kotlin.gradle.targets.js.ir.JsBinary 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.KotlinJsBinaryContainer
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
@@ -34,10 +34,10 @@ open class KotlinJsCompilation(
private val kotlinProperties = PropertiesProvider(target.project) private val kotlinProperties = PropertiesProvider(target.project)
internal val dukatMode: DukatMode internal val externalsOutputFormat: ExternalsOutputFormat
get() = kotlinProperties.dukatMode ?: defaultDukatMode get() = kotlinProperties.externalsOutputFormat ?: defaultExternalsOutputFormat
internal open val defaultDukatMode: DukatMode = DukatMode.BINARY internal open val defaultExternalsOutputFormat: ExternalsOutputFormat = ExternalsOutputFormat.BINARY
override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl() override val kotlinOptions: KotlinJsOptions = KotlinJsOptionsImpl()
@@ -29,9 +29,9 @@ internal class DukatCompilationResolverPlugin(
val separateTaskName = npmProject.compilation.disambiguateName("generateExternals") val separateTaskName = npmProject.compilation.disambiguateName("generateExternals")
init { init {
val dukatMode = compilation.dukatMode val externalsOutputFormat = compilation.externalsOutputFormat
gradleModelPostProcess(dukatMode, npmProject) gradleModelPostProcess(externalsOutputFormat, npmProject)
val integratedTask = project.registerTask<IntegratedDukatTask>( val integratedTask = project.registerTask<IntegratedDukatTask>(
integratedTaskName, integratedTaskName,
@@ -39,19 +39,19 @@ internal class DukatCompilationResolverPlugin(
) { ) {
it.group = DUKAT_TASK_GROUP it.group = DUKAT_TASK_GROUP
it.description = "Integrated generation Kotlin/JS external declarations for .d.ts files in ${compilation}" it.description = "Integrated generation Kotlin/JS external declarations for .d.ts files in ${compilation}"
it.dukatMode = dukatMode it.externalsOutputFormat = externalsOutputFormat
it.dependsOn(nodeJs.npmInstallTaskProvider, npmProject.packageJsonTask) it.dependsOn(nodeJs.npmInstallTaskProvider, npmProject.packageJsonTask)
} }
val target = compilation.target val target = compilation.target
if (target is KotlinJsIrTarget || target is KotlinJsTarget && dukatMode != DukatMode.SOURCE) { if (target is KotlinJsIrTarget || target is KotlinJsTarget && externalsOutputFormat != ExternalsOutputFormat.SOURCE) {
compilation.compileKotlinTaskProvider.dependsOn(integratedTask) compilation.compileKotlinTaskProvider.dependsOn(integratedTask)
} }
if (target is KotlinJsIrTarget && target.legacyTarget != null) { if (target is KotlinJsIrTarget && target.legacyTarget != null) {
target.legacyTarget?.compilations?.named(compilation.name) { target.legacyTarget?.compilations?.named(compilation.name) {
if (it.dukatMode == DukatMode.SOURCE) { if (it.externalsOutputFormat == ExternalsOutputFormat.SOURCE) {
it.compileKotlinTaskProvider.dependsOn(integratedTask) it.compileKotlinTaskProvider.dependsOn(integratedTask)
} }
} }
@@ -86,15 +86,15 @@ internal class DukatCompilationResolverPlugin(
val externalNpmDependencies = resolution[project][compilation].externalNpmDependencies val externalNpmDependencies = resolution[project][compilation].externalNpmDependencies
val target = compilation.target val target = compilation.target
val dukatMode = compilation.dukatMode val externalsOutputFormat = compilation.externalsOutputFormat
if (target is KotlinJsTarget && dukatMode == DukatMode.SOURCE) { if (target is KotlinJsTarget && externalsOutputFormat == ExternalsOutputFormat.SOURCE) {
return return
} }
DukatExecutor( DukatExecutor(
nodeJs, nodeJs,
DtsResolver(npmProject).getAllDts(externalNpmDependencies), DtsResolver(npmProject).getAllDts(externalNpmDependencies),
dukatMode, externalsOutputFormat,
npmProject, npmProject,
packageJsonIsUpdated, packageJsonIsUpdated,
operation = compilation.name + " > " + DukatExecutor.OPERATION, operation = compilation.name + " > " + DukatExecutor.OPERATION,
@@ -108,14 +108,14 @@ internal class DukatCompilationResolverPlugin(
} }
internal fun gradleModelPostProcess( internal fun gradleModelPostProcess(
dukatMode: DukatMode, externalsOutputFormat: ExternalsOutputFormat,
npmProject: NpmProject npmProject: NpmProject
) { ) {
val compilation = npmProject.compilation val compilation = npmProject.compilation
val project = npmProject.project val project = npmProject.project
when (dukatMode) { when (externalsOutputFormat) {
DukatMode.SOURCE -> compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir) ExternalsOutputFormat.SOURCE -> compilation.defaultSourceSet.kotlin.srcDir(npmProject.externalsDir)
DukatMode.BINARY -> { ExternalsOutputFormat.BINARY -> {
npmProject.externalsDir npmProject.externalsDir
.listFiles() .listFiles()
?.filter { it.isCompatibleArchive } ?.filter { it.isCompatibleArchive }
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
class DukatExecutor( class DukatExecutor(
val nodeJs: NodeJsRootExtension, val nodeJs: NodeJsRootExtension,
val typeDefinitions: List<DtsResolver.Dts>, val typeDefinitions: List<DtsResolver.Dts>,
val dukatMode: DukatMode, val externalsOutputFormat: ExternalsOutputFormat,
val npmProject: NpmProject, val npmProject: NpmProject,
val packageJsonIsUpdated: Boolean, val packageJsonIsUpdated: Boolean,
val operation: String = OPERATION, val operation: String = OPERATION,
@@ -50,7 +50,7 @@ class DukatExecutor(
DukatRunner( DukatRunner(
npmProject.compilation, npmProject.compilation,
typeDefinitions.map { it.file }, typeDefinitions.map { it.file },
dukatMode, externalsOutputFormat,
npmProject.externalsDir, npmProject.externalsDir,
operation = operation operation = operation
).execute() ).execute()
@@ -60,6 +60,6 @@ class DukatExecutor(
versionFile.writeText(version) versionFile.writeText(version)
gradleModelPostProcess(dukatMode, npmProject) gradleModelPostProcess(externalsOutputFormat, npmProject)
} }
} }
@@ -13,7 +13,7 @@ import java.io.File
class DukatRunner( class DukatRunner(
val compilation: KotlinJsCompilation, val compilation: KotlinJsCompilation,
val dTsFiles: Collection<File>, val dTsFiles: Collection<File>,
val dukatMode: DukatMode, val externalsOutputFormat: ExternalsOutputFormat,
val destDir: File, val destDir: File,
val qualifiedPackageName: String? = null, val qualifiedPackageName: String? = null,
val jsInteropJvmEngine: String? = null, val jsInteropJvmEngine: String? = null,
@@ -23,7 +23,7 @@ class DukatRunner(
compilation.target.project.execWithProgress(operation) { exec -> compilation.target.project.execWithProgress(operation) { exec ->
val args = mutableListOf<String>() val args = mutableListOf<String>()
if (dukatMode == DukatMode.BINARY) { if (externalsOutputFormat == ExternalsOutputFormat.BINARY) {
args.add("--descriptors-jar") args.add("--descriptors-jar")
} }
@@ -29,10 +29,10 @@ abstract class DukatTask(
get() = setOf(nodeJs.versions.dukat) get() = setOf(nodeJs.versions.dukat)
/** /**
* [DukatMode] what to generate, sources or binaries * [ExternalsOutputFormat] what to generate, sources or binaries
*/ */
@Input @Input
var dukatMode: DukatMode = DukatMode.SOURCE var externalsOutputFormat: ExternalsOutputFormat = ExternalsOutputFormat.SOURCE
@get:Internal @get:Internal
val dts by lazy { val dts by lazy {
@@ -87,7 +87,7 @@ abstract class DukatTask(
DukatRunner( DukatRunner(
compilation, compilation,
dTsFiles, dTsFiles,
dukatMode, externalsOutputFormat,
destinationDir, destinationDir,
qualifiedPackageName, qualifiedPackageName,
null, null,
@@ -5,14 +5,14 @@
package org.jetbrains.kotlin.gradle.targets.js.dukat package org.jetbrains.kotlin.gradle.targets.js.dukat
enum class DukatMode { enum class ExternalsOutputFormat {
SOURCE, SOURCE,
BINARY; BINARY;
companion object { companion object {
fun byArgumentOrNull(argument: String): DukatMode? = fun byArgumentOrNull(argument: String): ExternalsOutputFormat? =
values().firstOrNull { it.name.equals(argument, ignoreCase = true) } values().firstOrNull { it.name.equals(argument, ignoreCase = true) }
const val dukatModeProperty = "dukat.mode" const val externalsOutputFormatProperty = "kotlin.js.externals.output.format"
} }
} }
@@ -28,7 +28,7 @@ constructor(
DukatExecutor( DukatExecutor(
nodeJs, nodeJs,
dts, dts,
dukatMode, externalsOutputFormat,
compilation.npmProject, compilation.npmProject,
true, true,
compareInputs = false compareInputs = false
@@ -9,7 +9,7 @@ import org.gradle.api.file.SourceDirectorySet
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
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.dukat.DukatMode import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
class KotlinJsIrCompilation( class KotlinJsIrCompilation(
@@ -17,8 +17,8 @@ class KotlinJsIrCompilation(
name: String name: String
) : KotlinJsCompilation(target, name) { ) : KotlinJsCompilation(target, name) {
override val defaultDukatMode: DukatMode override val defaultExternalsOutputFormat: ExternalsOutputFormat
get() = DukatMode.SOURCE get() = ExternalsOutputFormat.SOURCE
internal val allSources: MutableSet<SourceDirectorySet> = mutableSetOf() internal val allSources: MutableSet<SourceDirectorySet> = mutableSetOf()