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 { kotlin {
js('nodeJs') { js('nodeJs') {
nodejs { nodejs {
binaries.executable()
} }
} }
js('browser') { js('browser') {
browser { browser {
binaries.executable()
} }
} }
sourceSets { sourceSets {
@@ -13,12 +13,12 @@ repositories {
kotlin { kotlin {
js("nodeJs") { js("nodeJs") {
nodejs { nodejs {
binaries.executable()
} }
} }
js("browser") { js("browser") {
browser { browser {
binaries.executable()
} }
} }
sourceSets { sourceSets {
@@ -18,7 +18,7 @@ kotlin {
} }
js('a') { js('a') {
browser { browser {
binaries.executable()
} }
} }
sourceSets { sourceSets {
@@ -18,7 +18,7 @@ kotlin {
} }
js("a") { js("a") {
browser { browser {
binaries.executable()
} }
} }
sourceSets { sourceSets {
@@ -14,4 +14,9 @@ dependencies {
testImplementation 'org.jetbrains.kotlin:kotlin-test-js' testImplementation 'org.jetbrains.kotlin:kotlin-test-js'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-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")) testImplementation(kotlin("test-js"))
implementation(kotlin("stdlib-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('styled-components','5.0.0')
implementation npm('inline-style-prefixer','5.1.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("styled-components","5.0.0"))
implementation(npm("inline-style-prefixer","5.1.0")) implementation(npm("inline-style-prefixer","5.1.0"))
} }
kotlin.target.browser { } kotlin {
js {
browser {}
binaries.executable()
}
}
@@ -29,7 +29,7 @@ kotlin {
} }
js { js {
browser { browser {
binaries.executable()
} }
} }
sourceSets { sourceSets {
@@ -29,7 +29,7 @@ kotlin {
} }
js { js {
browser { browser {
binaries.executable()
} }
} }
sourceSets { sourceSets {
@@ -87,6 +87,10 @@ module.configurator.ios.requires.xcode=Requires Xcode
module.configurator.js.browser=Browser module.configurator.js.browser=Browser
module.configurator.js.node=Node.js 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=Test framework
module.configurator.tests.setting.framework.junit4=JUnit 4 module.configurator.tests.setting.framework.junit4=JUnit 4
module.configurator.tests.setting.framework.junit5=JUnit 5 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.BuildSystemIR
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR 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.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.ModulesToIrConversionData
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
@@ -48,7 +49,12 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
module: Module module: Module
): List<BuildSystemIR> = buildList { ): List<BuildSystemIR> = buildList {
+RawGradleIR { +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 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.*
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR 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.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.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.buildSystemType 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.buildSystem.isGradle
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType 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.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind 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 { object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWithTests {
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
super<ModuleConfiguratorWithTests>.getConfiguratorSettings() +
super<JsTargetConfigurator>.getConfiguratorSettings()
@NonNls @NonNls
override val id = "jsBrowser" override val id = "jsBrowser"
@@ -75,7 +101,6 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.browser") override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.browser")
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
override fun Reader.createTargetIrs( override fun Reader.createTargetIrs(
@@ -85,7 +110,11 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
module.createTargetAccessIr(ModuleSubType.js), module.createTargetAccessIr(ModuleSubType.js),
buildPersistenceList { buildPersistenceList {
+RawGradleIR { +RawGradleIR {
sectionCall("browser") {} sectionCall("browser", needIndent = true) {
if (isApplication(module)) {
+"binaries.executable()"
}
}
} }
} }
) )
@@ -109,7 +138,11 @@ object JsNodeTargetConfigurator : JsTargetConfigurator {
module.createTargetAccessIr(ModuleSubType.js), module.createTargetAccessIr(ModuleSubType.js),
buildPersistenceList { buildPersistenceList {
+RawGradleIR { +RawGradleIR {
sectionCall("nodejs") {} sectionCall("nodejs", needIndent = true) {
if (isApplication(module)) {
+"binaries.executable()"
}
}
} }
} }
) )
@@ -203,7 +203,9 @@ object MultiplatformLibraryProjectTemplate : ProjectTemplate() {
listOf( listOf(
ModuleType.common.createDefaultTarget(), ModuleType.common.createDefaultTarget(),
ModuleType.jvm.createDefaultTarget(), ModuleType.jvm.createDefaultTarget(),
ModuleType.js.createDefaultTarget(), ModuleType.js.createDefaultTarget().withConfiguratorSettings(JsBrowserTargetConfigurator) {
JsTargetConfigurator.kind withValue JsTargetKind.LIBRARY
},
ModuleType.native.createDefaultTarget() ModuleType.native.createDefaultTarget()
) )
) )