Wizard: fix js Gradle dsl
#KT-38121 fixed
This commit is contained in:
+2
-2
@@ -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 {
|
||||||
|
|||||||
+2
-2
@@ -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 {
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
js('a') {
|
js('a') {
|
||||||
browser {
|
browser {
|
||||||
|
binaries.executable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
js("a") {
|
js("a") {
|
||||||
browser {
|
browser {
|
||||||
|
binaries.executable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+6
-1
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
+6
-1
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
+6
-1
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
+6
-1
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -29,7 +29,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
js {
|
js {
|
||||||
browser {
|
browser {
|
||||||
|
binaries.executable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ kotlin {
|
|||||||
}
|
}
|
||||||
js {
|
js {
|
||||||
browser {
|
browser {
|
||||||
|
binaries.executable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sourceSets {
|
sourceSets {
|
||||||
|
|||||||
+4
@@ -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
|
||||||
|
|||||||
+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.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()"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+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
|
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.*
|
||||||
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()"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-1
@@ -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()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user