Add CSS support to new project wizard
#KT-39770 fixed
This commit is contained in:
+1
@@ -90,6 +90,7 @@ 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.css=CSS Support
|
||||||
module.configurator.js.target.settings.kind=Target kind
|
module.configurator.js.target.settings.kind=Target kind
|
||||||
module.configurator.js.target.settings.kind.library=Library
|
module.configurator.js.target.settings.kind.library=Library
|
||||||
module.configurator.js.target.settings.kind.application=Application
|
module.configurator.js.target.settings.kind.application=Application
|
||||||
|
|||||||
+23
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
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.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.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
@@ -48,9 +49,30 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
|
|||||||
): List<BuildSystemIR> = irsList {
|
): List<BuildSystemIR> = irsList {
|
||||||
"kotlin" {
|
"kotlin" {
|
||||||
"js" {
|
"js" {
|
||||||
+"browser {}"
|
+"browser" {
|
||||||
|
applicationCssSupport()
|
||||||
|
testCssSupport()
|
||||||
|
}
|
||||||
+"binaries.executable()"
|
+"binaries.executable()"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun GradleIRListBuilder.applicationCssSupport() {
|
||||||
|
"webpackTask" {
|
||||||
|
+"cssSupport.enabled = true"
|
||||||
|
}
|
||||||
|
"runTask" {
|
||||||
|
+"cssSupport.enabled = true"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun GradleIRListBuilder.testCssSupport() {
|
||||||
|
"testTask" {
|
||||||
|
"useKarma" {
|
||||||
|
+"useChromeHeadless()"
|
||||||
|
+"cssSupport.enabled = true"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+25
-7
@@ -1,19 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildPersistenceList
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||||
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.gradle.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleStringConstIR
|
||||||
|
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.JsBrowserTargetConfigurator.isApplication
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsNodeTargetConfigurator.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
|
||||||
@@ -60,7 +62,7 @@ interface SimpleTargetConfigurator : TargetConfigurator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun Module.createTargetAccessIr(moduleSubType: ModuleSubType) =
|
internal fun Module.createTargetAccessIr(moduleSubType: ModuleSubType) =
|
||||||
TargetAccessIR(
|
TargetAccessIR(
|
||||||
moduleSubType,
|
moduleSubType,
|
||||||
name.takeIf { it != moduleSubType.name }
|
name.takeIf { it != moduleSubType.name }
|
||||||
@@ -75,13 +77,23 @@ interface JsTargetConfigurator : JSConfigurator, TargetConfigurator, SingleCoexi
|
|||||||
) {
|
) {
|
||||||
defaultValue = value(JsTargetKind.APPLICATION)
|
defaultValue = value(JsTargetKind.APPLICATION)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val cssSupport by booleanSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.js.css"),
|
||||||
|
GenerationPhase.PROJECT_GENERATION
|
||||||
|
) {
|
||||||
|
defaultValue = value(true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
override fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> =
|
||||||
super.getConfiguratorSettings() + kind
|
super.getConfiguratorSettings() + kind + cssSupport
|
||||||
|
|
||||||
fun Reader.isApplication(module: Module): Boolean =
|
fun Reader.isApplication(module: Module): Boolean =
|
||||||
settingsValue(module, kind) == JsTargetKind.APPLICATION
|
settingsValue(module, kind) == JsTargetKind.APPLICATION
|
||||||
|
|
||||||
|
fun Reader.hasCssSupport(module: Module): Boolean =
|
||||||
|
settingsValue(module, cssSupport)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class JsTargetKind(override val text: String) : DisplayableSettingItem {
|
enum class JsTargetKind(override val text: String) : DisplayableSettingItem {
|
||||||
@@ -114,6 +126,12 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
|
|||||||
if (isApplication(module)) {
|
if (isApplication(module)) {
|
||||||
+"binaries.executable()"
|
+"binaries.executable()"
|
||||||
}
|
}
|
||||||
|
if (hasCssSupport(module)) {
|
||||||
|
if (isApplication(module)) {
|
||||||
|
applicationCssSupport()
|
||||||
|
}
|
||||||
|
testCssSupport()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user