Wizard: get rid of reflection: specify plugin path by hand

This commit is contained in:
Ilya Kirillov
2020-06-10 16:17:00 +03:00
committed by Kirill Shmakov
parent 3ed11c0491
commit cc35529b9a
16 changed files with 31 additions and 2 deletions
@@ -29,8 +29,7 @@ abstract class Plugin(override val context: Context) : EntityBase(),
): ReadOnlyProperty<Any, PluginSetting<V, T>> = context.pluginSettingDelegate(create)
val reference = this::class
override val path = reference.path
open val title: String = reference.name
abstract override val path: String
abstract val settings: List<PluginSetting<*, *>>
abstract val pipelineTasks: List<PipelineTask>
@@ -22,6 +22,8 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules
class AndroidPlugin(context: Context) : Plugin(context) {
override val path = "android"
val androidSdkPath by pathSetting(
KotlinNewProjectWizardBundle.message("plugin.android.setting.sdk"),
neededAtPhase = GenerationPhase.PROJECT_GENERATION
@@ -16,6 +16,8 @@ import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
class RunConfigurationsPlugin(context: Context) : Plugin(context) {
override val path = "runConfigurations"
val configurations by listProperty<WizardRunConfiguration>()
val createRunConfigurationsTask by pipelineTask(GenerationPhase.PROJECT_IMPORT) {
@@ -17,6 +17,8 @@ import java.nio.file.Files
import java.nio.file.Paths
class StructurePlugin(context: Context) : Plugin(context) {
override val path = "structure"
val projectPath by pathSetting(
KotlinNewProjectWizardBundle.message("plugin.structure.setting.location"),
GenerationPhase.FIRST_STEP
@@ -27,6 +27,8 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
override val path = "buildSystem"
val type by enumSetting<BuildSystemType>(
KotlinNewProjectWizardBundle.message("plugin.buildsystem.setting.type"),
GenerationPhase.FIRST_STEP
@@ -3,6 +3,8 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem
import org.jetbrains.kotlin.tools.projectWizard.core.Context
class JpsPlugin(context: Context) : BuildSystemPlugin(context) {
override val path = "buildSystem.jps"
val addBuildSystemData by addBuildSystemData(
BuildSystemData(
type = BuildSystemType.Jps,
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
class MavenPlugin(context: Context) : BuildSystemPlugin(context) {
override val path = "buildSystem.maven"
private val isMaven = checker {
BuildSystemPlugin::type.settingValue == BuildSystemType.Maven
}
@@ -27,6 +27,8 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor
abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) {
override val path = "buildSystem.gradle"
val gradleProperties by listProperty(
"kotlin.code.style" to "official"
)
@@ -8,6 +8,8 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
class GroovyDslPlugin(context: Context) : GradlePlugin(context) {
override val path = "buildSystem.gradle.groovyDsl"
val addBuildSystemData by addBuildSystemData(
BuildSystemData(
type = BuildSystemType.GradleGroovyDsl,
@@ -8,6 +8,8 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
class KotlinDslPlugin(context: Context) : GradlePlugin(context) {
override val path = "buildSystem.gradle.kotlinDsl"
val addBuildSystemData by addBuildSystemData(
BuildSystemData(
type = BuildSystemType.GradleKotlinDsl,
@@ -25,6 +25,8 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
import java.nio.file.Path
class KotlinPlugin(context: Context) : Plugin(context) {
override val path = "kotlin"
val version by property(
// todo do not hardcode kind & repository
WizardKotlinVersion(Versions.KOTLIN, KotlinVersionKind.M, Repositories.KOTLIN_EAP_BINTRAY)
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules
import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.ProjectTemplate
class ProjectTemplatesPlugin(context: Context) : Plugin(context) {
override val path = "projectTemplates"
val template by dropDownSetting<ProjectTemplate>(
KotlinNewProjectWizardBundle.message("plugin.templates.setting.template"),
GenerationPhase.INIT_TEMPLATE,
@@ -4,6 +4,8 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Context
import org.jetbrains.kotlin.tools.projectWizard.templates.ConsoleJvmApplicationTemplate
class ConsoleJvmApplicationTemplatePlugin(context: Context) : TemplatePlugin(context) {
override val path = "template.consoleJvmApplicationTemplate"
val addTemplate by addTemplateTask(
ConsoleJvmApplicationTemplate()
)
@@ -5,6 +5,8 @@ import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
import org.jetbrains.kotlin.tools.projectWizard.templates.SimpleJsClientTemplate
class JsTemplatesPlugin(context: Context) : TemplatePlugin(context) {
override val path = "template.jsTemplate"
val addTemplate by addTemplateTask(SimpleJsClientTemplate())
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
@@ -8,6 +8,8 @@ import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
abstract class TemplatePlugin(context: Context) : Plugin(context) {
override val path = "template"
fun addTemplateTask(template: Template) = pipelineTask(GenerationPhase.PREPARE) {
withAction {
TemplatesPlugin::addTemplate.execute(template)
@@ -23,6 +23,8 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.settingValue
import java.nio.file.Path
class TemplatesPlugin(context: Context) : Plugin(context) {
override val path = "templates"
val templates by property<Map<String, Template>>(
emptyMap()
)