Wizard: introduce Android & JS multiplatform project kinds

#KT-36155 fixed
This commit is contained in:
Ilya Kirillov
2020-02-12 18:26:02 +03:00
parent a5a72a89fc
commit e1b99580eb
7 changed files with 23 additions and 14 deletions
@@ -31,9 +31,10 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
validate { buildSystemType ->
if (!buildSystemType.isGradle
&& KotlinPlugin::projectKind.reference.notRequiredSettingValue == ProjectKind.Multiplatform
&& KotlinPlugin::projectKind.reference.notRequiredSettingValue != ProjectKind.Singleplatform
) {
ValidationResult.ValidationError("Multiplatform project cannot be generated using ${buildSystemType.text}")
val projectKind = KotlinPlugin::projectKind.reference.notRequiredSettingValue?.text?.capitalize() ?: "Project"
ValidationResult.ValidationError("$projectKind cannot be generated using ${buildSystemType.text}")
} else ValidationResult.OK
}
}
@@ -123,7 +123,9 @@ class KotlinPlugin(context: Context) : Plugin(context) {
enum class ProjectKind(override val text: String) : DisplayableSettingItem {
Singleplatform("Singleplatform JVM project"),
Multiplatform("Multiplatform project")
Multiplatform("Multiplatform project"),
Android("Android project"),
Js("Kotlin/JS project")
}
fun List<Module>.withAllSubModules(includeSourcesets: Boolean = false): List<Module> = buildList {
@@ -200,7 +200,7 @@ object AndroidApplication : ProjectTemplate() {
Simple <b>Android</b> application with single activity
""".trimIndent()
override val suggestedProjectName = "myAndroidApplication"
override val projectKind = ProjectKind.Multiplatform
override val projectKind = ProjectKind.Android
override val setsPluginSettings: List<SettingWithValue<*, *>>
get() = listOf(
@@ -248,7 +248,7 @@ object JsBrowserApplication : ProjectTemplate() {
override val title = "Kotlin/JS Frontend Application"
override val htmlDescription = "Gradle project for a Kotlin/JS frontend web application"
override val suggestedProjectName = "myKotlinJsApplication"
override val projectKind = ProjectKind.Multiplatform
override val projectKind = ProjectKind.Js
override val setsPluginSettings: List<SettingWithValue<*, *>>
get() = listOf(
@@ -78,6 +78,7 @@ class Module(
configurator == MppModuleConfigurator -> "MPP Module"
configurator == AndroidSinglePlatformModuleConfigurator -> "Android Module"
configurator == IOSSinglePlatformModuleConfigurator -> "IOS Module"
configurator == JsSingleplatformModuleConfigurator -> "JS Module"
else -> "Module"
}