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.multiplatform.NonDefaultTargetConfigurationIR
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.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.kotlin.*
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
interface NativeTargetConfigurator : TargetConfigurator
interface NativeTargetConfigurator : TargetConfigurator {
val isDesktopTarget: Boolean
}
class RealNativeTargetConfigurator private constructor(
override val moduleSubType: ModuleSubType
) : NativeTargetConfigurator, SimpleTargetConfigurator {
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) {
listOf(
@@ -47,6 +48,7 @@ class RealNativeTargetConfigurator private constructor(
object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator {
override val moduleType = ModuleType.native
override val isDesktopTarget: Boolean = true
@NonNls
override val id = "nativeForCurrentSystem"
@@ -38,6 +38,14 @@ enum class ModuleSubType(val moduleType: ModuleType) {
val ModuleSubType.isIOS: Boolean
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) {
ModuleType.jvm -> StdlibType.StdlibJdk8
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.settings.buildsystem.SourcesetType
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() {
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 id: String = "nativeConsoleApp"
override fun isApplicableTo(module: Module): Boolean =
module.configurator.safeAs<NativeTargetConfigurator>()?.isDesktopTarget == true
override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR =
targetConfigurationIR.withIrs(NativeTargetInternalIR("main"))