From 3ed11c04913012cdc7b5c4b3537af602100cbf6d Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 10 Jun 2020 15:33:00 +0300 Subject: [PATCH] Wizard: get rid of reflection: force plugins to specify settings & tasks directly --- .../kotlin/tools/projectWizard/core/Context.kt | 7 ++++--- .../kotlin/tools/projectWizard/core/Plugin.kt | 12 ++---------- .../projectWizard/plugins/AndroidPlugin.kt | 10 ++++++++++ .../plugins/RunConfigurationsPlugin.kt | 5 +++++ .../projectWizard/plugins/StructurePlugin.kt | 13 +++++++++++++ .../plugins/buildSystem/BuildSystemPlugin.kt | 11 +++++++++++ .../plugins/buildSystem/MavenPlugin.kt | 8 ++++++++ .../plugins/buildSystem/gradle/GradlePlugin.kt | 11 +++++++++++ .../buildSystem/gradle/GroovyDslPlugin.kt | 6 ++++++ .../buildSystem/gradle/KotlinDslPlugin.kt | 5 +++++ .../plugins/kotlin/KotlinPlugin.kt | 17 +++++++++++++++++ .../projectTemplates/ProjectTemplatesPlugin.kt | 5 +++++ .../plugins/templates/JsTemplatesPlugin.kt | 6 ++++++ .../plugins/templates/KtorTemplatesPlugin.kt | 6 ++++++ .../NativeConsoleApplicationTemplatePlugin.kt | 6 ++++++ .../plugins/templates/TemplatePlugin.kt | 5 +++++ .../plugins/templates/TemplatesPlugin.kt | 10 ++++++++++ 17 files changed, 130 insertions(+), 13 deletions(-) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt index 0083b7b7678..20887b6fa18 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt @@ -20,12 +20,13 @@ class Context private constructor( private val propertyContext: PropertyContext, private val taskContext: TaskContext ) { + private lateinit var plugins: List private val settingWritingContext = SettingsWriter() private val pluginSettings by lazy(LazyThreadSafetyMode.NONE) { - plugins.flatMap(Plugin::declaredSettings).distinctBy(PluginSetting<*, *>::path) + plugins.flatMap(Plugin::settings).distinctBy(PluginSetting<*, *>::path) } fun read(reader: Reader.() -> T): T = @@ -107,7 +108,7 @@ class Context private constructor( private val pipelineLineTasks: List get() = plugins - .flatMap { it.declaredTasks.filterIsInstance() } + .flatMap { it.pipelineTasks } private fun task(reference: PipelineTaskReference) = taskContext.getEntity(reference) as? PipelineTask ?: error(reference.path) @@ -251,7 +252,7 @@ class Context private constructor( fun Reader.getUnspecifiedSettings(phases: Set): List { val required = plugins .flatMap { plugin -> - plugin.declaredSettings.mapNotNull { setting -> + plugin.settings.mapNotNull { setting -> if (setting.neededAtPhase !in phases) return@mapNotNull null if (setting.isRequired) setting else null } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt index 96373eeb908..a84478c29fa 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt @@ -11,7 +11,6 @@ import java.nio.file.Path import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KClass import kotlin.reflect.full.isSubclassOf -import kotlin.reflect.full.memberProperties typealias PluginReference = KClass typealias PluginsCreator = (Context) -> List @@ -33,15 +32,8 @@ abstract class Plugin(override val context: Context) : EntityBase(), override val path = reference.path open val title: String = reference.name - val declaredSettings get() = entitiesOfType>().toSet() - val declaredTasks get() = entitiesOfType() - - private inline fun entitiesOfType() = - reference.memberProperties.filter { kProperty -> - kProperty.returnType.classifier.safeAs>()?.isSubclassOf(E::class) == true - }.mapNotNull { kProperty -> - kProperty.safeAs()?.getter?.call(this) as? E - } + abstract val settings: List> + abstract val pipelineTasks: List fun pipelineTask(phase: GenerationPhase, init: PipelineTask.Builder.() -> Unit) = context.pipelineTaskDelegate(phase, init) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt index df167c0188c..20dc186a224 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt @@ -10,6 +10,9 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.Plugin import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS import org.jetbrains.kotlin.tools.projectWizard.core.checker +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask +import org.jetbrains.kotlin.tools.projectWizard.core.entity.Task +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase @@ -47,4 +50,11 @@ class AndroidPlugin(context: Context) : Plugin(context) { ) } } + + override val settings: List> = listOf( + androidSdkPath + ) + override val pipelineTasks: List = listOf( + addAndroidSdkToLocalProperties + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt index 9c263708e08..b9403a21e2f 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt @@ -9,6 +9,8 @@ import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.Plugin import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin @@ -26,4 +28,7 @@ class RunConfigurationsPlugin(context: Context) : Plugin(context) { UNIT_SUCCESS } } + + override val settings: List> = emptyList() + override val pipelineTasks: List = listOf(createRunConfigurationsTask) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt index b82255c8bb4..b0eb9a681b8 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt @@ -3,8 +3,10 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.PomIR @@ -68,6 +70,17 @@ class StructurePlugin(context: Context) : Plugin(context) { } } + override val settings: List> = + listOf( + projectPath, + name, + groupId, + artifactId, + version + ) + override val pipelineTasks: List = + listOf(createProjectDir) + companion object { private val ALLOWED_SPECIAL_CHARS_IN_GROUP_ID = Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES + '.' private val ALLOWED_SPECIAL_CHARS_IN_ARTIFACT_ID = Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt index 90b650d042a..cb91237e034 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt @@ -5,7 +5,9 @@ import org.jetbrains.annotations.Nls import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference import org.jetbrains.kotlin.tools.projectWizard.core.service.BuildSystemAvailabilityWizardService import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService @@ -110,6 +112,15 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) { BuildSystemPlugin::buildSystemData.addValues(data) } } + + override val settings: List> = listOf( + type, + ) + override val pipelineTasks: List = listOf( + takeRepositoriesFromDependencies, + createModules, + importProject, + ) } data class BuildSystemData( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt index 71a91e076ea..94658094095 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.asSuccess import org.jetbrains.kotlin.tools.projectWizard.core.checker +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RootFileModuleStructureIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.ModulesDependencyMavenIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.PluginRepositoryMavenIR @@ -61,4 +62,11 @@ class MavenPlugin(context: Context) : BuildSystemPlugin(context) { ) ) ) + + override val pipelineTasks: List = super.pipelineTasks + + listOf( + createSettingsFileTask, + addBuildSystemPluginRepositories, + addBuildSystemData + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt index b73ca98f033..a74000d92a5 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt @@ -3,6 +3,8 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.* +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR @@ -128,6 +130,15 @@ abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) { ) } } + override val settings: List> = super.settings + override val pipelineTasks: List = super.pipelineTasks + + listOf( + createGradlePropertiesFile, + createLocalPropertiesFile, + initGradleWrapperTask, + createSettingsFileTask, + ) + } val Reader.settingsGradleBuildFileData diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt index 8087e49a01d..d1ad7676d1f 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle import org.jetbrains.kotlin.tools.projectWizard.core.Context +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildFileData import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemData import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType @@ -16,4 +17,9 @@ class GroovyDslPlugin(context: Context) : GradlePlugin(context) { ) ) ) + + override val pipelineTasks: List = super.pipelineTasks + + listOf( + addBuildSystemData, + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt index e1e7d7d8415..a3e36c2ca58 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle import org.jetbrains.kotlin.tools.projectWizard.core.Context +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildFileData import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemData import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType @@ -16,4 +17,8 @@ class KotlinDslPlugin(context: Context) : GradlePlugin(context) { ) ) ) + override val pipelineTasks: List = super.pipelineTasks + + listOf( + addBuildSystemData, + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt index 902af700569..589c0af45b4 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt @@ -3,9 +3,11 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.* +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult import org.jetbrains.kotlin.tools.projectWizard.core.entity.fold import org.jetbrains.kotlin.tools.projectWizard.core.entity.settingValidator +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.service.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR @@ -159,6 +161,21 @@ class KotlinPlugin(context: Context) : Plugin(context) { }.fold() } } + + override val settings: List> = + listOf( + projectKind, + modules, + ) + + override val pipelineTasks: List = + listOf( + initKotlinVersions, + createModules, + createPluginRepositories, + createSourcesetDirectories + ) + } enum class ProjectKind(override val text: String) : DisplayableSettingItem { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/projectTemplates/ProjectTemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/projectTemplates/ProjectTemplatesPlugin.kt index 6c67980ced0..556a1a3e080 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/projectTemplates/ProjectTemplatesPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/projectTemplates/ProjectTemplatesPlugin.kt @@ -2,6 +2,8 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin @@ -19,6 +21,9 @@ class ProjectTemplatesPlugin(context: Context) : Plugin(context) { values = ProjectTemplate.ALL isRequired = false } + + override val settings: List> = listOf(template) + override val pipelineTasks: List = listOf() } fun SettingsWriter.applyProjectTemplate(projectTemplate: ProjectTemplate) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/JsTemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/JsTemplatesPlugin.kt index 66eafb52e35..2e94cac081c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/JsTemplatesPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/JsTemplatesPlugin.kt @@ -1,8 +1,14 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates import org.jetbrains.kotlin.tools.projectWizard.core.Context +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.templates.SimpleJsClientTemplate class JsTemplatesPlugin(context: Context) : TemplatePlugin(context) { val addTemplate by addTemplateTask(SimpleJsClientTemplate()) + + override val pipelineTasks: List = super.pipelineTasks + + listOf( + addTemplate, + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/KtorTemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/KtorTemplatesPlugin.kt index f0b196423df..0b366edd2cd 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/KtorTemplatesPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/KtorTemplatesPlugin.kt @@ -1,8 +1,14 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates import org.jetbrains.kotlin.tools.projectWizard.core.Context +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.templates.KtorServerTemplate class KtorTemplatesPlugin(context: Context) : TemplatePlugin(context) { val addTemplate by addTemplateTask(KtorServerTemplate()) + + override val pipelineTasks: List = super.pipelineTasks + + listOf( + addTemplate, + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/NativeConsoleApplicationTemplatePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/NativeConsoleApplicationTemplatePlugin.kt index f2c30c24f07..839eb392ac6 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/NativeConsoleApplicationTemplatePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/NativeConsoleApplicationTemplatePlugin.kt @@ -6,8 +6,14 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates import org.jetbrains.kotlin.tools.projectWizard.core.Context +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask import org.jetbrains.kotlin.tools.projectWizard.templates.NativeConsoleApplicationTemplate class NativeConsoleApplicationTemplatePlugin(context: Context) : TemplatePlugin(context) { val addTemplate by addTemplateTask(NativeConsoleApplicationTemplate()) + + override val pipelineTasks: List = super.pipelineTasks + + listOf( + addTemplate, + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatePlugin.kt index 15d870b08e4..e29f6f65b70 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatePlugin.kt @@ -2,6 +2,8 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.Plugin +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.templates.Template @@ -11,4 +13,7 @@ abstract class TemplatePlugin(context: Context) : Plugin(context) { TemplatesPlugin::addTemplate.execute(template) } } + + override val settings: List> = emptyList() + override val pipelineTasks: List = emptyList() } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt index 0e427d03171..c5033dc491b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt @@ -3,6 +3,8 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR +import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask +import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfiguratorWithTests @@ -160,4 +162,12 @@ class TemplatesPlugin(context: Context) : Plugin(context) { } } } + + override val settings: List> = listOf() + override val pipelineTasks: List = + listOf( + renderFileTemplates, + addTemplatesToModules, + postApplyTemplatesToModules + ) } \ No newline at end of file