From 626bd3431966bcb8a8ca0f9855696a894431c85a Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 30 Aug 2022 11:32:59 +0200 Subject: [PATCH] Generate JS module kind type ^KT-27301 In Progress --- .../arguments/GenerateGradleOptions.kt | 1 + .../generators/arguments/jsTypesGenerators.kt | 33 +++++++++++++++++++ .../kotlin/gradle/dsl/JsModuleKind.kt | 18 ++++++++++ 3 files changed, 52 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsModuleKind.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt index b06cb9eebb8..d60856a06c6 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt @@ -36,6 +36,7 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.() generateKotlinVersion(apiSrcDir, withPrinterToFile) generateJvmTarget(apiSrcDir, withPrinterToFile) generateJsMainFunctionExecutionMode(apiSrcDir, withPrinterToFile) + generateJsModuleKind(apiSrcDir, withPrinterToFile) // common interface val commonInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions") diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt index 712890a9839..c2706134510 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt @@ -39,3 +39,36 @@ internal fun generateJsMainFunctionExecutionMode( } } } + +internal fun generateJsModuleKind( + apiDir: File, + filePrinter: (targetFile: File, Printer.() -> Unit) -> Unit +) { + val jsModuleKindFqName = FqName("org.jetbrains.kotlin.gradle.dsl.JsModuleKind") + filePrinter(file(apiDir, jsModuleKindFqName)) { + generateDeclaration("enum class", jsModuleKindFqName, afterType = "(val kind: String)") { + val kinds = hashMapOf( + K2JsArgumentConstants::MODULE_PLAIN.name to K2JsArgumentConstants.MODULE_PLAIN, + K2JsArgumentConstants::MODULE_AMD.name to K2JsArgumentConstants.MODULE_AMD, + K2JsArgumentConstants::MODULE_COMMONJS.name to K2JsArgumentConstants.MODULE_COMMONJS, + K2JsArgumentConstants::MODULE_UMD.name to K2JsArgumentConstants.MODULE_UMD, + K2JsArgumentConstants::MODULE_ES.name to K2JsArgumentConstants.MODULE_ES + ) + + val lastIndex = kinds.size - 1 + kinds.entries.forEachIndexed { index, mode -> + val lastChar = if (index == lastIndex) ";" else "," + println("${mode.key}(\"${mode.value}\")$lastChar") + } + + println() + println("companion object {") + withIndent { + println("fun fromKind(kind: String): JsModuleKind =") + println(" JsModuleKind.values().firstOrNull { it.kind == kind }") + println(" ?: throw IllegalArgumentException(\"Unknown JS module kind: ${'$'}kind\")") + } + println("}") + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsModuleKind.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsModuleKind.kt new file mode 100644 index 00000000000..5ab19423ce3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsModuleKind.kt @@ -0,0 +1,18 @@ +// DO NOT EDIT MANUALLY! +// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +package org.jetbrains.kotlin.gradle.dsl + +@Suppress("DEPRECATION") +enum class JsModuleKind (val kind: String) { + MODULE_AMD("amd"), + MODULE_PLAIN("plain"), + MODULE_ES("es"), + MODULE_COMMONJS("commonjs"), + MODULE_UMD("umd"); + + companion object { + fun fromKind(kind: String): JsModuleKind = + JsModuleKind.values().firstOrNull { it.kind == kind } + ?: throw IllegalArgumentException("Unknown JS module kind: $kind") + } +}