Wizard: fix js Gradle dsl
#KT-38121 fixed
This commit is contained in:
+2
-2
@@ -13,12 +13,12 @@ repositories {
|
||||
kotlin {
|
||||
js('nodeJs') {
|
||||
nodejs {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
js('browser') {
|
||||
browser {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
|
||||
+2
-2
@@ -13,12 +13,12 @@ repositories {
|
||||
kotlin {
|
||||
js("nodeJs") {
|
||||
nodejs {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
js("browser") {
|
||||
browser {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ kotlin {
|
||||
}
|
||||
js('a') {
|
||||
browser {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ kotlin {
|
||||
}
|
||||
js("a") {
|
||||
browser {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
|
||||
+6
-1
@@ -14,4 +14,9 @@ dependencies {
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-js'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-js'
|
||||
}
|
||||
kotlin.target.browser { }
|
||||
kotlin {
|
||||
js {
|
||||
browser {}
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -14,4 +14,9 @@ dependencies {
|
||||
testImplementation(kotlin("test-js"))
|
||||
implementation(kotlin("stdlib-js"))
|
||||
}
|
||||
kotlin.target.browser { }
|
||||
kotlin {
|
||||
js {
|
||||
browser {}
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -27,4 +27,9 @@ dependencies {
|
||||
implementation npm('styled-components','5.0.0')
|
||||
implementation npm('inline-style-prefixer','5.1.0')
|
||||
}
|
||||
kotlin.target.browser { }
|
||||
kotlin {
|
||||
js {
|
||||
browser {}
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
+6
-1
@@ -27,4 +27,9 @@ dependencies {
|
||||
implementation(npm("styled-components","5.0.0"))
|
||||
implementation(npm("inline-style-prefixer","5.1.0"))
|
||||
}
|
||||
kotlin.target.browser { }
|
||||
kotlin {
|
||||
js {
|
||||
browser {}
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -29,7 +29,7 @@ kotlin {
|
||||
}
|
||||
js {
|
||||
browser {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ kotlin {
|
||||
}
|
||||
js {
|
||||
browser {
|
||||
|
||||
binaries.executable()
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
|
||||
+4
@@ -87,6 +87,10 @@ module.configurator.ios.requires.xcode=Requires Xcode
|
||||
module.configurator.js.browser=Browser
|
||||
module.configurator.js.node=Node.js
|
||||
|
||||
module.configurator.js.target.settings.kind=Target kind
|
||||
module.configurator.js.target.settings.kind.library=Library
|
||||
module.configurator.js.target.settings.kind.application=Application
|
||||
|
||||
module.configurator.tests.setting.framework=Test framework
|
||||
module.configurator.tests.setting.framework.junit4=JUnit 4
|
||||
module.configurator.tests.setting.framework.junit5=JUnit 5
|
||||
|
||||
+7
-1
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.rawIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
@@ -48,7 +49,12 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
+RawGradleIR {
|
||||
+"kotlin.target.browser { }"
|
||||
sectionCall("kotlin", needIndent = true) {
|
||||
sectionCall("js", needIndent = true) {
|
||||
+"browser {}"; nlIndented()
|
||||
+"binaries.executable()"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
@@ -173,6 +173,9 @@ interface ModuleConfiguratorWithSettings : ModuleConfigurator {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun <V : Any, T : SettingType<V>> Reader.settingsValue(module: Module, setting: ModuleConfiguratorSetting<V, T>): V =
|
||||
withSettingsOf(module) { setting.reference.settingValue }
|
||||
}
|
||||
|
||||
val ModuleConfigurator.settings
|
||||
|
||||
+37
-4
@@ -12,10 +12,12 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetAccessIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserTargetConfigurator.isApplication
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.buildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||
|
||||
@@ -64,9 +66,33 @@ private fun Module.createTargetAccessIr(moduleSubType: ModuleSubType) =
|
||||
)
|
||||
|
||||
|
||||
interface JsTargetConfigurator : JSConfigurator, TargetConfigurator, SingleCoexistenceTargetConfigurator
|
||||
interface JsTargetConfigurator : JSConfigurator, TargetConfigurator, SingleCoexistenceTargetConfigurator, ModuleConfiguratorWithSettings {
|
||||
companion object : ModuleConfiguratorSettings() {
|
||||
val kind by enumSetting<JsTargetKind>(
|
||||
KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.kind"),
|
||||
GenerationPhase.PROJECT_GENERATION
|
||||
) {
|
||||
defaultValue = value(JsTargetKind.APPLICATION)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
||||
super.getConfiguratorSettings() + kind
|
||||
|
||||
fun Reader.isApplication(module: Module): Boolean =
|
||||
settingsValue(module, kind) == JsTargetKind.APPLICATION
|
||||
}
|
||||
|
||||
enum class JsTargetKind(override val text: String) : DisplayableSettingItem {
|
||||
LIBRARY(KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.kind.library")),
|
||||
APPLICATION(KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.kind.application"))
|
||||
}
|
||||
|
||||
object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWithTests {
|
||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
||||
super<ModuleConfiguratorWithTests>.getConfiguratorSettings() +
|
||||
super<JsTargetConfigurator>.getConfiguratorSettings()
|
||||
|
||||
@NonNls
|
||||
override val id = "jsBrowser"
|
||||
|
||||
@@ -75,7 +101,6 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
|
||||
|
||||
override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.browser")
|
||||
|
||||
|
||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
||||
|
||||
override fun Reader.createTargetIrs(
|
||||
@@ -85,7 +110,11 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
|
||||
module.createTargetAccessIr(ModuleSubType.js),
|
||||
buildPersistenceList {
|
||||
+RawGradleIR {
|
||||
sectionCall("browser") {}
|
||||
sectionCall("browser", needIndent = true) {
|
||||
if (isApplication(module)) {
|
||||
+"binaries.executable()"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -109,7 +138,11 @@ object JsNodeTargetConfigurator : JsTargetConfigurator {
|
||||
module.createTargetAccessIr(ModuleSubType.js),
|
||||
buildPersistenceList {
|
||||
+RawGradleIR {
|
||||
sectionCall("nodejs") {}
|
||||
sectionCall("nodejs", needIndent = true) {
|
||||
if (isApplication(module)) {
|
||||
+"binaries.executable()"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
+3
-1
@@ -203,7 +203,9 @@ object MultiplatformLibraryProjectTemplate : ProjectTemplate() {
|
||||
listOf(
|
||||
ModuleType.common.createDefaultTarget(),
|
||||
ModuleType.jvm.createDefaultTarget(),
|
||||
ModuleType.js.createDefaultTarget(),
|
||||
ModuleType.js.createDefaultTarget().withConfiguratorSettings(JsBrowserTargetConfigurator) {
|
||||
JsTargetConfigurator.kind withValue JsTargetKind.LIBRARY
|
||||
},
|
||||
ModuleType.native.createDefaultTarget()
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user