From c1ed683ed894800ef8e4294f9db5176d7cea0f00 Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Tue, 30 Aug 2022 11:45:31 +0200 Subject: [PATCH] Generate Js source map embed mode type ^KT-27301 In Progress --- .../arguments/GenerateGradleOptions.kt | 1 + .../generators/arguments/jsTypesGenerators.kt | 31 +++++++++++++++++++ .../kotlin/gradle/dsl/JsSourceMapEmbedMode.kt | 16 ++++++++++ 3 files changed, 48 insertions(+) create mode 100644 libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsSourceMapEmbedMode.kt diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt index d60856a06c6..0f1dbb8b800 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt @@ -37,6 +37,7 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.() generateJvmTarget(apiSrcDir, withPrinterToFile) generateJsMainFunctionExecutionMode(apiSrcDir, withPrinterToFile) generateJsModuleKind(apiSrcDir, withPrinterToFile) + generateJsSourceMapEmbedMode(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 c2706134510..3d33b91ceaa 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/jsTypesGenerators.kt @@ -72,3 +72,34 @@ internal fun generateJsModuleKind( } } } + +internal fun generateJsSourceMapEmbedMode( + apiDir: File, + filePrinter: (targetFile: File, Printer.() -> Unit) -> Unit +) { + val jsSourceMapEmbedKindFqName = FqName("org.jetbrains.kotlin.gradle.dsl.JsSourceMapEmbedMode") + filePrinter(file(apiDir, jsSourceMapEmbedKindFqName)) { + generateDeclaration("enum class", jsSourceMapEmbedKindFqName, afterType = "(val mode: String)") { + val modes = hashMapOf( + K2JsArgumentConstants::SOURCE_MAP_SOURCE_CONTENT_ALWAYS.name to K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_ALWAYS, + K2JsArgumentConstants::SOURCE_MAP_SOURCE_CONTENT_NEVER.name to K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_NEVER, + K2JsArgumentConstants::SOURCE_MAP_SOURCE_CONTENT_INLINING.name to K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING, + ) + + val lastIndex = modes.size - 1 + modes.entries.forEachIndexed { index, mode -> + val lastChar = if (index == lastIndex) ";" else "," + println("${mode.key}(\"${mode.value}\")$lastChar") + } + + println() + println("companion object {") + withIndent { + println("fun fromMode(mode: String): JsSourceMapEmbedMode =") + println(" JsSourceMapEmbedMode.values().firstOrNull { it.mode == mode }") + println(" ?: throw IllegalArgumentException(\"Unknown JS source map embed mode: ${'$'}mode\")") + } + println("}") + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsSourceMapEmbedMode.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsSourceMapEmbedMode.kt new file mode 100644 index 00000000000..313d87b961d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/JsSourceMapEmbedMode.kt @@ -0,0 +1,16 @@ +// DO NOT EDIT MANUALLY! +// Generated by org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +package org.jetbrains.kotlin.gradle.dsl + +@Suppress("DEPRECATION") +enum class JsSourceMapEmbedMode (val mode: String) { + SOURCE_MAP_SOURCE_CONTENT_INLINING("inlining"), + SOURCE_MAP_SOURCE_CONTENT_NEVER("never"), + SOURCE_MAP_SOURCE_CONTENT_ALWAYS("always"); + + companion object { + fun fromMode(mode: String): JsSourceMapEmbedMode = + JsSourceMapEmbedMode.values().firstOrNull { it.mode == mode } + ?: throw IllegalArgumentException("Unknown JS source map embed mode: $mode") + } +}