Wizard: get rid of reflection: force plugins to specify settings & tasks directly
This commit is contained in:
committed by
Kirill Shmakov
parent
eadd3f00f2
commit
3ed11c0491
+4
-3
@@ -20,12 +20,13 @@ class Context private constructor(
|
|||||||
private val propertyContext: PropertyContext,
|
private val propertyContext: PropertyContext,
|
||||||
private val taskContext: TaskContext
|
private val taskContext: TaskContext
|
||||||
) {
|
) {
|
||||||
|
|
||||||
private lateinit var plugins: List<Plugin>
|
private lateinit var plugins: List<Plugin>
|
||||||
|
|
||||||
private val settingWritingContext = SettingsWriter()
|
private val settingWritingContext = SettingsWriter()
|
||||||
|
|
||||||
private val pluginSettings by lazy(LazyThreadSafetyMode.NONE) {
|
private val pluginSettings by lazy(LazyThreadSafetyMode.NONE) {
|
||||||
plugins.flatMap(Plugin::declaredSettings).distinctBy(PluginSetting<*, *>::path)
|
plugins.flatMap(Plugin::settings).distinctBy(PluginSetting<*, *>::path)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T> read(reader: Reader.() -> T): T =
|
fun <T> read(reader: Reader.() -> T): T =
|
||||||
@@ -107,7 +108,7 @@ class Context private constructor(
|
|||||||
|
|
||||||
private val pipelineLineTasks: List<PipelineTask>
|
private val pipelineLineTasks: List<PipelineTask>
|
||||||
get() = plugins
|
get() = plugins
|
||||||
.flatMap { it.declaredTasks.filterIsInstance<PipelineTask>() }
|
.flatMap { it.pipelineTasks }
|
||||||
|
|
||||||
private fun task(reference: PipelineTaskReference) =
|
private fun task(reference: PipelineTaskReference) =
|
||||||
taskContext.getEntity(reference) as? PipelineTask ?: error(reference.path)
|
taskContext.getEntity(reference) as? PipelineTask ?: error(reference.path)
|
||||||
@@ -251,7 +252,7 @@ class Context private constructor(
|
|||||||
fun Reader.getUnspecifiedSettings(phases: Set<GenerationPhase>): List<AnySetting> {
|
fun Reader.getUnspecifiedSettings(phases: Set<GenerationPhase>): List<AnySetting> {
|
||||||
val required = plugins
|
val required = plugins
|
||||||
.flatMap { plugin ->
|
.flatMap { plugin ->
|
||||||
plugin.declaredSettings.mapNotNull { setting ->
|
plugin.settings.mapNotNull { setting ->
|
||||||
if (setting.neededAtPhase !in phases) return@mapNotNull null
|
if (setting.neededAtPhase !in phases) return@mapNotNull null
|
||||||
if (setting.isRequired) setting else null
|
if (setting.isRequired) setting else null
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-10
@@ -11,7 +11,6 @@ import java.nio.file.Path
|
|||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
import kotlin.reflect.full.isSubclassOf
|
import kotlin.reflect.full.isSubclassOf
|
||||||
import kotlin.reflect.full.memberProperties
|
|
||||||
|
|
||||||
typealias PluginReference = KClass<out Plugin>
|
typealias PluginReference = KClass<out Plugin>
|
||||||
typealias PluginsCreator = (Context) -> List<Plugin>
|
typealias PluginsCreator = (Context) -> List<Plugin>
|
||||||
@@ -33,15 +32,8 @@ abstract class Plugin(override val context: Context) : EntityBase(),
|
|||||||
override val path = reference.path
|
override val path = reference.path
|
||||||
open val title: String = reference.name
|
open val title: String = reference.name
|
||||||
|
|
||||||
val declaredSettings get() = entitiesOfType<PluginSetting<*, *>>().toSet()
|
abstract val settings: List<PluginSetting<*, *>>
|
||||||
val declaredTasks get() = entitiesOfType<Task>()
|
abstract val pipelineTasks: List<PipelineTask>
|
||||||
|
|
||||||
private inline fun <reified E : Entity> entitiesOfType() =
|
|
||||||
reference.memberProperties.filter { kProperty ->
|
|
||||||
kProperty.returnType.classifier.safeAs<KClass<*>>()?.isSubclassOf(E::class) == true
|
|
||||||
}.mapNotNull { kProperty ->
|
|
||||||
kProperty.safeAs<EntityReference>()?.getter?.call(this) as? E
|
|
||||||
}
|
|
||||||
|
|
||||||
fun pipelineTask(phase: GenerationPhase, init: PipelineTask.Builder.() -> Unit) =
|
fun pipelineTask(phase: GenerationPhase, init: PipelineTask.Builder.() -> Unit) =
|
||||||
context.pipelineTaskDelegate(phase, init)
|
context.pipelineTaskDelegate(phase, init)
|
||||||
|
|||||||
+10
@@ -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.Plugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.checker
|
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.core.service.FileSystemWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
@@ -47,4 +50,11 @@ class AndroidPlugin(context: Context) : Plugin(context) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> = listOf(
|
||||||
|
androidSdkPath
|
||||||
|
)
|
||||||
|
override val pipelineTasks: List<PipelineTask> = listOf(
|
||||||
|
addAndroidSdkToLocalProperties
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+5
@@ -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.Context
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
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.core.service.RunConfigurationsService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
||||||
@@ -26,4 +28,7 @@ class RunConfigurationsPlugin(context: Context) : Plugin(context) {
|
|||||||
UNIT_SUCCESS
|
UNIT_SUCCESS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> = emptyList()
|
||||||
|
override val pipelineTasks: List<PipelineTask> = listOf(createRunConfigurationsTask)
|
||||||
}
|
}
|
||||||
+13
@@ -3,8 +3,10 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.StringValidators
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
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.entity.settings.reference
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.PomIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.PomIR
|
||||||
@@ -68,6 +70,17 @@ class StructurePlugin(context: Context) : Plugin(context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> =
|
||||||
|
listOf(
|
||||||
|
projectPath,
|
||||||
|
name,
|
||||||
|
groupId,
|
||||||
|
artifactId,
|
||||||
|
version
|
||||||
|
)
|
||||||
|
override val pipelineTasks: List<PipelineTask> =
|
||||||
|
listOf(createProjectDir)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val ALLOWED_SPECIAL_CHARS_IN_GROUP_ID = Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES + '.'
|
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
|
private val ALLOWED_SPECIAL_CHARS_IN_ARTIFACT_ID = Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
|
||||||
|
|||||||
+11
@@ -5,7 +5,9 @@ import org.jetbrains.annotations.Nls
|
|||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.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.entity.settings.reference
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.BuildSystemAvailabilityWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.BuildSystemAvailabilityWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||||
@@ -110,6 +112,15 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
|
|||||||
BuildSystemPlugin::buildSystemData.addValues(data)
|
BuildSystemPlugin::buildSystemData.addValues(data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> = listOf(
|
||||||
|
type,
|
||||||
|
)
|
||||||
|
override val pipelineTasks: List<PipelineTask> = listOf(
|
||||||
|
takeRepositoriesFromDependencies,
|
||||||
|
createModules,
|
||||||
|
importProject,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class BuildSystemData(
|
data class BuildSystemData(
|
||||||
|
|||||||
+8
@@ -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.Context
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.asSuccess
|
import org.jetbrains.kotlin.tools.projectWizard.core.asSuccess
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.checker
|
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.RootFileModuleStructureIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.ModulesDependencyMavenIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.ModulesDependencyMavenIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.PluginRepositoryMavenIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.PluginRepositoryMavenIR
|
||||||
@@ -61,4 +62,11 @@ class MavenPlugin(context: Context) : BuildSystemPlugin(context) {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
createSettingsFileTask,
|
||||||
|
addBuildSystemPluginRepositories,
|
||||||
|
addBuildSystemData
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+11
@@ -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.Versions
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.entity.settings.reference
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
@@ -128,6 +130,15 @@ abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
override val settings: List<PluginSetting<*, *>> = super.settings
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
createGradlePropertiesFile,
|
||||||
|
createLocalPropertiesFile,
|
||||||
|
initGradleWrapperTask,
|
||||||
|
createSettingsFileTask,
|
||||||
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val Reader.settingsGradleBuildFileData
|
val Reader.settingsGradleBuildFileData
|
||||||
|
|||||||
+6
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
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.BuildFileData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||||
@@ -16,4 +17,9 @@ class GroovyDslPlugin(context: Context) : GradlePlugin(context) {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
addBuildSystemData,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+5
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
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.BuildFileData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||||
@@ -16,4 +17,8 @@ class KotlinDslPlugin(context: Context) : GradlePlugin(context) {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
addBuildSystemData,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+17
@@ -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.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.ValidationResult
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.fold
|
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.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.core.service.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR
|
||||||
@@ -159,6 +161,21 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
}.fold()
|
}.fold()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> =
|
||||||
|
listOf(
|
||||||
|
projectKind,
|
||||||
|
modules,
|
||||||
|
)
|
||||||
|
|
||||||
|
override val pipelineTasks: List<PipelineTask> =
|
||||||
|
listOf(
|
||||||
|
initKotlinVersions,
|
||||||
|
createModules,
|
||||||
|
createPluginRepositories,
|
||||||
|
createSourcesetDirectories
|
||||||
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class ProjectKind(override val text: String) : DisplayableSettingItem {
|
enum class ProjectKind(override val text: String) : DisplayableSettingItem {
|
||||||
|
|||||||
+5
@@ -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.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||||
@@ -19,6 +21,9 @@ class ProjectTemplatesPlugin(context: Context) : Plugin(context) {
|
|||||||
values = ProjectTemplate.ALL
|
values = ProjectTemplate.ALL
|
||||||
isRequired = false
|
isRequired = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> = listOf(template)
|
||||||
|
override val pipelineTasks: List<PipelineTask> = listOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun SettingsWriter.applyProjectTemplate(projectTemplate: ProjectTemplate) {
|
fun SettingsWriter.applyProjectTemplate(projectTemplate: ProjectTemplate) {
|
||||||
|
|||||||
+6
@@ -1,8 +1,14 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
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
|
import org.jetbrains.kotlin.tools.projectWizard.templates.SimpleJsClientTemplate
|
||||||
|
|
||||||
class JsTemplatesPlugin(context: Context) : TemplatePlugin(context) {
|
class JsTemplatesPlugin(context: Context) : TemplatePlugin(context) {
|
||||||
val addTemplate by addTemplateTask(SimpleJsClientTemplate())
|
val addTemplate by addTemplateTask(SimpleJsClientTemplate())
|
||||||
|
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
addTemplate,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+6
@@ -1,8 +1,14 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
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
|
import org.jetbrains.kotlin.tools.projectWizard.templates.KtorServerTemplate
|
||||||
|
|
||||||
class KtorTemplatesPlugin(context: Context) : TemplatePlugin(context) {
|
class KtorTemplatesPlugin(context: Context) : TemplatePlugin(context) {
|
||||||
val addTemplate by addTemplateTask(KtorServerTemplate())
|
val addTemplate by addTemplateTask(KtorServerTemplate())
|
||||||
|
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
addTemplate,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+6
@@ -6,8 +6,14 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
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
|
import org.jetbrains.kotlin.tools.projectWizard.templates.NativeConsoleApplicationTemplate
|
||||||
|
|
||||||
class NativeConsoleApplicationTemplatePlugin(context: Context) : TemplatePlugin(context) {
|
class NativeConsoleApplicationTemplatePlugin(context: Context) : TemplatePlugin(context) {
|
||||||
val addTemplate by addTemplateTask(NativeConsoleApplicationTemplate())
|
val addTemplate by addTemplateTask(NativeConsoleApplicationTemplate())
|
||||||
|
|
||||||
|
override val pipelineTasks: List<PipelineTask> = super.pipelineTasks +
|
||||||
|
listOf(
|
||||||
|
addTemplate,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+5
@@ -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.Context
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
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.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||||
|
|
||||||
@@ -11,4 +13,7 @@ abstract class TemplatePlugin(context: Context) : Plugin(context) {
|
|||||||
TemplatesPlugin::addTemplate.execute(template)
|
TemplatesPlugin::addTemplate.execute(template)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> = emptyList()
|
||||||
|
override val pipelineTasks: List<PipelineTask> = emptyList()
|
||||||
}
|
}
|
||||||
|
|||||||
+10
@@ -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.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR
|
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.core.service.TemplateEngineService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfiguratorWithTests
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfiguratorWithTests
|
||||||
@@ -160,4 +162,12 @@ class TemplatesPlugin(context: Context) : Plugin(context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val settings: List<PluginSetting<*, *>> = listOf()
|
||||||
|
override val pipelineTasks: List<PipelineTask> =
|
||||||
|
listOf(
|
||||||
|
renderFileTemplates,
|
||||||
|
addTemplatesToModules,
|
||||||
|
postApplyTemplatesToModules
|
||||||
|
)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user