Wizard: do not suggest NativeConsoleApplicationTemplate to non-desktop targets

This commit is contained in:
Ilya Kirillov
2020-03-26 09:53:32 +03:00
parent d58d3d06f5
commit 393af3669f
3 changed files with 21 additions and 5 deletions
@@ -10,19 +10,20 @@ 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.NonDefaultTargetConfigurationIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.NonDefaultTargetConfigurationIR
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.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.*
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.isIOS
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
interface NativeTargetConfigurator : TargetConfigurator interface NativeTargetConfigurator : TargetConfigurator {
val isDesktopTarget: Boolean
}
class RealNativeTargetConfigurator private constructor( class RealNativeTargetConfigurator private constructor(
override val moduleSubType: ModuleSubType override val moduleSubType: ModuleSubType
) : NativeTargetConfigurator, SimpleTargetConfigurator { ) : NativeTargetConfigurator, SimpleTargetConfigurator {
override val text: String = moduleSubType.name.capitalize() override val text: String = moduleSubType.name.capitalize()
override val isDesktopTarget: Boolean
get() = moduleSubType.isNativeDesktop
override fun createInnerTargetIrs(reader: Reader, module: Module): List<BuildSystemIR> = if (moduleSubType.isIOS) { override fun createInnerTargetIrs(reader: Reader, module: Module): List<BuildSystemIR> = if (moduleSubType.isIOS) {
listOf( listOf(
@@ -47,6 +48,7 @@ class RealNativeTargetConfigurator private constructor(
object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator { object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator {
override val moduleType = ModuleType.native override val moduleType = ModuleType.native
override val isDesktopTarget: Boolean = true
@NonNls @NonNls
override val id = "nativeForCurrentSystem" override val id = "nativeForCurrentSystem"
@@ -38,6 +38,14 @@ enum class ModuleSubType(val moduleType: ModuleType) {
val ModuleSubType.isIOS: Boolean val ModuleSubType.isIOS: Boolean
get() = this in EnumSet.of(ModuleSubType.iosX64, ModuleSubType.iosArm32, ModuleSubType.iosArm64) get() = this in EnumSet.of(ModuleSubType.iosX64, ModuleSubType.iosArm32, ModuleSubType.iosArm64)
val ModuleSubType.isNativeDesktop: Boolean
get() = this in EnumSet.of(
ModuleSubType.linuxX64,
ModuleSubType.macosX64,
ModuleSubType.mingwX64, ModuleSubType.mingwX86
)
fun ModuleType.correspondingStdlib(): StdlibType? = when (this) { fun ModuleType.correspondingStdlib(): StdlibType? = when (this) {
ModuleType.jvm -> StdlibType.StdlibJdk8 ModuleType.jvm -> StdlibType.StdlibJdk8
ModuleType.js -> StdlibType.StdlibJs ModuleType.js -> StdlibType.StdlibJs
@@ -16,6 +16,9 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs
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.SourcesetType import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.NativeTargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
class NativeConsoleApplicationTemplate : Template() { class NativeConsoleApplicationTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title") override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title")
@@ -24,6 +27,9 @@ class NativeConsoleApplicationTemplate : Template() {
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.native) override val moduleTypes: Set<ModuleType> = setOf(ModuleType.native)
override val id: String = "nativeConsoleApp" override val id: String = "nativeConsoleApp"
override fun isApplicableTo(module: Module): Boolean =
module.configurator.safeAs<NativeTargetConfigurator>()?.isDesktopTarget == true
override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR = override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR =
targetConfigurationIR.withIrs(NativeTargetInternalIR("main")) targetConfigurationIR.withIrs(NativeTargetInternalIR("main"))