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.*
|
||||||
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"
|
||||||
|
|||||||
+8
@@ -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
|
||||||
|
|||||||
+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.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"))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user