Generate JS module kind type

^KT-27301 In Progress
This commit is contained in:
Yahor Berdnikau
2022-08-30 11:32:59 +02:00
parent 14f45b48b3
commit 626bd34319
3 changed files with 52 additions and 0 deletions
@@ -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")
@@ -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("}")
}
}
}
@@ -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")
}
}