Wizard: do not suggest NativeConsoleApplicationTemplate to non-desktop targets
This commit is contained in:
+7
-5
@@ -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"
|
||||
|
||||
+8
@@ -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
|
||||
|
||||
+6
@@ -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"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user