Wizard: remove module types for some module configurators
#KT-36176 fixed
This commit is contained in:
+1
@@ -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
|
||||
|
||||
+1
@@ -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
|
||||
|
||||
+2
-1
@@ -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
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -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()
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
-3
@@ -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>
|
||||
|
||||
+2
-1
@@ -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"
|
||||
|
||||
+1
-1
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -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? =
|
||||
|
||||
+2
-1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+9
-4
@@ -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"
|
||||
|
||||
-2
@@ -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
|
||||
|
||||
+2
-3
@@ -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()
|
||||
)
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+2
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user