[JS, Wizard] Move subtarget settings in separate object
^KT-41417 fixed
This commit is contained in:
+45
-35
@@ -17,6 +17,11 @@ 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.GradleIRListBuilder
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIRListBuilder
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.BrowserJsSinglePlatformModuleConfigurator.settingsValue
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JSConfigurator.Companion.isApplication
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserBasedConfigurator.Companion.browserSubTarget
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserBasedConfigurator.Companion.cssSupport
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsNodeBasedConfigurator.Companion.nodejsSubTarget
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
@@ -40,38 +45,6 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType, ModuleConfiguratorW
|
|||||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
||||||
super.getConfiguratorSettings() + kind
|
super.getConfiguratorSettings() + kind
|
||||||
|
|
||||||
fun Reader.isApplication(module: Module): Boolean =
|
|
||||||
settingsValue(module, kind) == JsTargetKind.APPLICATION
|
|
||||||
|
|
||||||
fun Reader.hasCssSupport(module: Module): Boolean =
|
|
||||||
settingsValue(module, cssSupport)
|
|
||||||
|
|
||||||
fun GradleIRListBuilder.browserSubTarget(module: Module, reader: Reader) {
|
|
||||||
"browser" {
|
|
||||||
if (reader.isApplication(module)) {
|
|
||||||
applicationSupport()
|
|
||||||
}
|
|
||||||
if (reader.hasCssSupport(module)) {
|
|
||||||
if (reader.isApplication(module)) {
|
|
||||||
applicationCssSupport()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this@JSConfigurator is ModuleConfiguratorWithTests
|
|
||||||
&& reader.settingValue(module, ModuleConfiguratorWithTests.testFramework) != KotlinTestFramework.NONE
|
|
||||||
) {
|
|
||||||
testTask(cssSupport = reader.hasCssSupport(module))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun GradleIRListBuilder.nodejsSubTarget(module: Module, reader: Reader) {
|
|
||||||
"nodejs" {
|
|
||||||
if (reader.isApplication(module)) {
|
|
||||||
applicationSupport()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object : ModuleConfiguratorSettings() {
|
companion object : ModuleConfiguratorSettings() {
|
||||||
val kind by enumSetting<JsTargetKind>(
|
val kind by enumSetting<JsTargetKind>(
|
||||||
KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.kind"),
|
KotlinNewProjectWizardBundle.message("module.configurator.js.target.settings.kind"),
|
||||||
@@ -87,12 +60,49 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType, ModuleConfiguratorW
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val cssSupport by booleanSetting(
|
fun Reader.isApplication(module: Module): Boolean =
|
||||||
|
settingsValue(module, kind) == JsTargetKind.APPLICATION
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface JsBrowserBasedConfigurator {
|
||||||
|
companion object : ModuleConfiguratorSettings() {
|
||||||
|
val cssSupport by JSConfigurator.booleanSetting(
|
||||||
KotlinNewProjectWizardBundle.message("module.configurator.js.css"),
|
KotlinNewProjectWizardBundle.message("module.configurator.js.css"),
|
||||||
GenerationPhase.PROJECT_GENERATION
|
GenerationPhase.PROJECT_GENERATION
|
||||||
) {
|
) {
|
||||||
defaultValue = value(true)
|
defaultValue = value(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Reader.hasCssSupport(module: Module): Boolean =
|
||||||
|
settingsValue(module, cssSupport)
|
||||||
|
|
||||||
|
fun GradleIRListBuilder.browserSubTarget(module: Module, reader: Reader) {
|
||||||
|
"browser" {
|
||||||
|
if (reader.isApplication(module)) {
|
||||||
|
applicationSupport()
|
||||||
|
if (reader.hasCssSupport(module)) {
|
||||||
|
applicationCssSupport()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (reader.settingValue(module, ModuleConfiguratorWithTests.testFramework) != KotlinTestFramework.NONE
|
||||||
|
) {
|
||||||
|
testTask(cssSupport = reader.hasCssSupport(module))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface JsNodeBasedConfigurator {
|
||||||
|
companion object : ModuleConfiguratorSettings() {
|
||||||
|
fun GradleIRListBuilder.nodejsSubTarget(module: Module, reader: Reader) {
|
||||||
|
"nodejs" {
|
||||||
|
if (reader.isApplication(module)) {
|
||||||
|
applicationSupport()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +143,7 @@ abstract class JsSinglePlatformModuleConfigurator :
|
|||||||
protected abstract fun GradleIRListBuilder.subTarget(module: Module, reader: Reader)
|
protected abstract fun GradleIRListBuilder.subTarget(module: Module, reader: Reader)
|
||||||
}
|
}
|
||||||
|
|
||||||
object BrowserJsSinglePlatformModuleConfigurator : JsSinglePlatformModuleConfigurator() {
|
object BrowserJsSinglePlatformModuleConfigurator : JsSinglePlatformModuleConfigurator(), JsBrowserBasedConfigurator {
|
||||||
@NonNls
|
@NonNls
|
||||||
override val id = "jsBrowserSinglePlatform"
|
override val id = "jsBrowserSinglePlatform"
|
||||||
|
|
||||||
@@ -141,7 +151,7 @@ object BrowserJsSinglePlatformModuleConfigurator : JsSinglePlatformModuleConfigu
|
|||||||
|
|
||||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> {
|
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> {
|
||||||
return super.getConfiguratorSettings() +
|
return super.getConfiguratorSettings() +
|
||||||
JSConfigurator.cssSupport
|
cssSupport
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun GradleIRListBuilder.subTarget(module: Module, reader: Reader) {
|
override fun GradleIRListBuilder.subTarget(module: Module, reader: Reader) {
|
||||||
|
|||||||
+3
-1
@@ -16,7 +16,9 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleStri
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.irsList
|
||||||
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.JSConfigurator.Companion.cssSupport
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserBasedConfigurator.Companion.browserSubTarget
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsBrowserBasedConfigurator.Companion.cssSupport
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsNodeBasedConfigurator.Companion.nodejsSubTarget
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user