Wizard: remove module types for some module configurators

#KT-36176 fixed
This commit is contained in:
Ilya Kirillov
2020-02-10 16:53:27 +03:00
parent 0123dbce21
commit fabb0584da
16 changed files with 26 additions and 26 deletions
@@ -5,6 +5,7 @@ import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.configuratorSettings
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.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.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
@@ -10,6 +10,7 @@ import com.intellij.util.ui.UIUtil
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
@@ -1,5 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor
import com.intellij.icons.AllIcons
import com.intellij.openapi.ui.popup.ListPopup
import com.intellij.openapi.ui.popup.PopupStep
import com.intellij.openapi.ui.popup.util.BaseListPopupStep
@@ -71,7 +72,7 @@ class CreateModuleOrTargetPopup private constructor(
) {
override fun getIconFor(value: DisplayableSettingItem): Icon? = when (value) {
is DisplayableTargetConfiguratorGroup -> value.moduleType.icon
is ModuleConfigurator -> value.moduleType.icon
is ModuleConfigurator -> value.moduleType?.icon ?: AllIcons.Nodes.Module
else -> null
}
@@ -27,7 +27,6 @@ class NewModuleCreator {
SourcesetType.values().map { sourcesetType ->
Sourceset(
sourcesetType,
configurator.moduleType,
dependencies = emptyList()
)
}
@@ -57,7 +56,6 @@ class NewModuleCreator {
else -> SourcesetType.values().map { sourcesetType ->
Sourceset(
sourcesetType,
ModuleType.jvm,
dependencies = emptyList()
)
}
@@ -89,7 +89,7 @@ val ModuleType.icon: Icon
val Module.icon: Icon
get() = when (kind) {
ModuleKind.target -> configurator.moduleType.icon
ModuleKind.target -> (configurator as TargetConfigurator).moduleType.icon
ModuleKind.multiplatform -> AllIcons.Nodes.Module
ModuleKind.singleplatformJs -> KotlinIcons.JS
ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module
@@ -16,7 +16,6 @@ sealed class ModuleIR : IrsOwner, BuildSystemIR {
abstract val name: String
abstract val path: Path
abstract val template: Template?
abstract val type: ModuleType
abstract val originalModule: Module
abstract val sourcesets: List<SourcesetIR>
}
@@ -27,7 +26,6 @@ data class SingleplatformModuleIR(
override val path: Path,
override val irs: List<BuildSystemIR>,
override val template: Template?,
override val type: ModuleType,
override val originalModule: Module,
override val sourcesets: List<SingleplatformSourcesetIR>
) : ModuleIR() {
@@ -52,7 +50,6 @@ data class MultiplatformModuleIR(
override val name: String,
override val path: Path,
override val irs: List<BuildSystemIR>,
override val type: ModuleType,
override val template: Template?,
override val originalModule: Module,
override val sourcesets: List<MultiplatformSourcesetIR>
@@ -26,7 +26,8 @@ import java.nio.file.Path
object AndroidSinglePlatformModuleConfigurator : ModuleConfiguratorWithSettings(),
SinglePlatformModuleConfigurator,
AndroidModuleConfigurator {
AndroidModuleConfigurator,
ModuleConfiguratorWithModuleType{
override val moduleType = ModuleType.jvm
override val id = "android"
override val suggestedModuleName = "android"
@@ -14,7 +14,7 @@ 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.ModuleKind
interface JSConfigurator : ModuleConfigurator {
interface JSConfigurator : ModuleConfiguratorWithModuleType {
override val moduleType: ModuleType get() = ModuleType.js
}
@@ -184,7 +184,6 @@ val Module.configuratorSettings
interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
val moduleKind: ModuleKind
val moduleType: ModuleType
override val text: String
get() = id
@@ -198,7 +197,7 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
emptyList()
fun createStdlibType(configurationData: ModuleConfigurationData, module: Module): StdlibType? =
moduleType.correspondingStdlib()
safeAs<ModuleConfiguratorWithModuleType>()?.moduleType?.correspondingStdlib()
fun createRootBuildFileIrs(configurationData: ModuleConfigurationData): List<BuildSystemIR> = emptyList()
fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSetting
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSettingReference
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinArbitraryDependencyIR
@@ -29,7 +30,7 @@ abstract class ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings() {
filter = filter@{ reference, kotlinTestFramework ->
if (reference !is ModuleConfiguratorSettingReference<*, *>) return@filter true
val moduleType = reference.module?.configurator?.moduleType
val moduleType = reference.module?.configurator?.safeAs<ModuleConfiguratorWithModuleType>()?.moduleType
kotlinTestFramework.moduleType == moduleType
}
}
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
interface TargetConfigurator : ModuleConfigurator {
interface TargetConfigurator : ModuleConfiguratorWithModuleType {
override val moduleKind get() = ModuleKind.target
fun canCoexistsWith(other: List<TargetConfigurator>): Boolean = true
@@ -1,5 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
@@ -9,9 +10,14 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
interface JvmModuleConfigurator : ModuleConfigurator
interface AndroidModuleConfigurator : ModuleConfigurator
interface ModuleConfiguratorWithModuleType : ModuleConfigurator {
val moduleType: ModuleType
}
val ModuleConfigurator.moduleType: ModuleType?
get() = safeAs<ModuleConfiguratorWithModuleType>()?.moduleType
object MppModuleConfigurator : ModuleConfigurator {
override val moduleType = ModuleType.jvm // TODO
override val moduleKind = ModuleKind.multiplatform
override val suggestedModuleName = "shared"
override val id = "multiplatform"
@@ -28,12 +34,12 @@ object MppModuleConfigurator : ModuleConfigurator {
interface SinglePlatformModuleConfigurator : ModuleConfigurator {
override val moduleKind get() = ModuleKind.singleplatformJvm
}
object JvmSinglePlatformModuleConfigurator : ModuleConfiguratorWithTests(),
SinglePlatformModuleConfigurator,
JvmModuleConfigurator {
JvmModuleConfigurator,
ModuleConfiguratorWithModuleType {
override val moduleType get() = ModuleType.jvm
override val suggestedModuleName = "jvm"
override val id = "JVM Module"
@@ -52,7 +58,6 @@ object JvmSinglePlatformModuleConfigurator : ModuleConfiguratorWithTests(),
object IOSSinglePlatformModuleConfigurator :
SinglePlatformModuleConfigurator {
override val moduleType get() = ModuleType.jvm //todo
override val id = "IOS Module"
override val suggestedModuleName = "ios"
override val greyText = "Requires Apple Xcode"
@@ -120,7 +120,6 @@ class ModulesToIRsConverter(
modulePath,
dependenciesIRs,
module.template,
module.configurator.moduleType,
module,
module.sourcesets.map { sourceset ->
SingleplatformSourcesetIR(
@@ -210,7 +209,6 @@ class ModulesToIRsConverter(
target.name,
modulePath,
with(target.configurator) { createModuleIRs(data, target) },
target.configurator.moduleType,
target.template,
target,
sourcesetss
@@ -88,7 +88,6 @@ private fun ModuleType.createDefaultSourcesets() =
SourcesetType.values().map { sourcesetType ->
Sourceset(
sourcesetType,
this,
dependencies = emptyList()
)
}
@@ -212,7 +211,7 @@ object AndroidApplication : ProjectTemplate() {
AndroidSinglePlatformModuleConfigurator,
template = null,
sourcesets = SourcesetType.ALL.map { type ->
Sourceset(type, ModuleType.jvm, dependencies = emptyList())
Sourceset(type, dependencies = emptyList())
},
subModules = emptyList()
)
@@ -260,7 +259,7 @@ object JsBrowserApplication : ProjectTemplate() {
JsSingleplatformModuleConfigurator,
template = SimpleJsClientTemplate(),
sourcesets = SourcesetType.ALL.map { type ->
Sourceset(type, ModuleType.jvm, dependencies = emptyList())
Sourceset(type, dependencies = emptyList())
},
subModules = emptyList()
)
@@ -98,7 +98,7 @@ class Module(
this,
path,
"sourcesets",
listParser(Sourceset.parser(configurator.moduleType))
listParser(Sourceset.parser())
) { emptyList() }
val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() }
Module(name, kind, configurator, template, sourcesets, submodules, identificator = identificator)
@@ -35,7 +35,6 @@ data class PathBasedSourcesetDependency(val path: ModulePath) : SourcesetDepende
// A `main` or `test` sourceset for single or multiplatform projects
class Sourceset(
val sourcesetType: SourcesetType,
val containingModuleType: ModuleType,
var dependencies: List<SourcesetDependency>,
var parent: Module? = null,
override val identificator: Identificator = GeneratedIdentificator(sourcesetType.name)
@@ -44,7 +43,7 @@ class Sourceset(
override val greyText: String? get() = null
companion object {
fun parser(moduleType: ModuleType) = mapParser { map, path ->
fun parser() = mapParser { map, path ->
val (sourcesetType) = map.parseValue<SourcesetType>(this, path, "type", enumParser())
val identificator = GeneratedIdentificator(sourcesetType.name)
val (dependencies) = map.parseValue(
@@ -54,7 +53,7 @@ class Sourceset(
listParser(PathBasedSourcesetDependency.parser)
) { emptyList() }
Sourceset(sourcesetType, moduleType, dependencies, identificator = identificator)
Sourceset(sourcesetType, dependencies, identificator = identificator)
}
}
}