Wizard: fix js Gradle dsl

#KT-38121 fixed
This commit is contained in:
Ilya Kirillov
2020-04-09 18:01:10 +03:00
parent 4e91f1c607
commit 367699a853
15 changed files with 86 additions and 18 deletions
@@ -13,12 +13,12 @@ repositories {
kotlin {
js('nodeJs') {
nodejs {
binaries.executable()
}
}
js('browser') {
browser {
binaries.executable()
}
}
sourceSets {
@@ -13,12 +13,12 @@ repositories {
kotlin {
js("nodeJs") {
nodejs {
binaries.executable()
}
}
js("browser") {
browser {
binaries.executable()
}
}
sourceSets {
@@ -18,7 +18,7 @@ kotlin {
}
js('a') {
browser {
binaries.executable()
}
}
sourceSets {
@@ -18,7 +18,7 @@ kotlin {
}
js("a") {
browser {
binaries.executable()
}
}
sourceSets {
@@ -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()
}
}
@@ -14,4 +14,9 @@ dependencies {
testImplementation(kotlin("test-js"))
implementation(kotlin("stdlib-js"))
}
kotlin.target.browser { }
kotlin {
js {
browser {}
binaries.executable()
}
}
@@ -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()
}
}
@@ -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()
}
}
@@ -29,7 +29,7 @@ kotlin {
}
js {
browser {
binaries.executable()
}
}
sourceSets {
@@ -29,7 +29,7 @@ kotlin {
}
js {
browser {
binaries.executable()
}
}
sourceSets {
@@ -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
@@ -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()"
}
}
}
}
}
@@ -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
@@ -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()"
}
}
}
}
)
@@ -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()
)
)