diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt index 01f0d0f5a60..b1c0869e465 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt @@ -10,7 +10,7 @@ import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunCo import com.intellij.openapi.project.Project import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService import org.jetbrains.kotlin.tools.projectWizard.core.service.isBuildSystemAvailable @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType class IdeaRunConfigurationsService(private val project: Project) : RunConfigurationsService, IdeaWizardService { - override fun ReadingContext.addRunConfigurations(configurations: List) { + override fun Reader.addRunConfigurations(configurations: List) { configurations.forEach { wizardConfiguration -> if (wizardConfiguration is WizardGradleRunConfiguration && isBuildSystemAvailable(BuildSystemType.GradleKotlinDsl)) { addGradleRunConfiguration(wizardConfiguration) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt index 5f066d187b8..988176a73a5 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt @@ -2,9 +2,9 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui import org.jetbrains.kotlin.tools.projectWizard.core.Context -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext -import org.jetbrains.kotlin.tools.projectWizard.core.SettingsWritingContext -import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader +import org.jetbrains.kotlin.tools.projectWizard.core.SettingsWriter +import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSettingPropertyReference import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingType @@ -48,13 +48,13 @@ abstract class DynamicComponent(private val context: Context) : Component() { } } - protected fun read(reader: ReadingContext.() -> T): T = + protected fun read(reader: Reader.() -> T): T = context.read(reader) - protected fun write(writer: WritingContext.() -> T): T = + protected fun write(writer: Writer.() -> T): T = context.write(writer) - protected fun modify(modifier: SettingsWritingContext.() -> T): T = + protected fun modify(modifier: SettingsWriter.() -> T): T = context.writeSettings(modifier) open fun onValueUpdated(reference: SettingReference<*, *>?) {} diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt index 44dbb746ce3..d5041d2cd98 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components import com.intellij.openapi.Disposable import org.jetbrains.kotlin.tools.projectWizard.core.Context -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult import org.jetbrains.kotlin.tools.projectWizard.core.entity.isSpecificError @@ -90,7 +90,7 @@ abstract class UIComponent( } } -fun ReadingContext.valueForSetting( +fun Reader.valueForSetting( uiComponent: UIComponent, setting: SettingReference> ): V? = setting.savedOrDefaultValue ?: uiComponent.getUiValue() \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt b/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt index 07b4a8798c2..18881584688 100644 --- a/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt +++ b/libraries/tools/new-project-wizard/new-project-wizard-cli/src/org/jetbrains/kotlin/tools/projectWizard/wizard/YamlWizard.kt @@ -45,7 +45,7 @@ class YamlWizard( } } -fun ReadingContext.parseYaml( +fun Reader.parseYaml( yaml: String, pluginSettings: List> ): TaskResult, Any>> { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt index d2e5b6b93a8..2cbc8184f82 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt @@ -1,6 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.core -typealias Checker = ReadingContext.() -> Boolean +typealias Checker = Reader.() -> Boolean val ALWAYS_AVAILABLE_CHECKER = checker { true } @@ -13,5 +13,5 @@ interface ContextOwner { interface ActivityCheckerOwner { val isAvailable: Checker - fun isActive(readingContext: ReadingContext) = isAvailable(readingContext) + fun isActive(reader: Reader) = isAvailable(reader) } \ No newline at end of file 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 a9a2353bfa3..98c965af0ef 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 @@ -22,19 +22,19 @@ class Context private constructor( ) { private lateinit var plugins: List - private val settingWritingContext = SettingsWritingContext() + private val settingWritingContext = SettingsWriter() private val pluginSettings by lazy(LazyThreadSafetyMode.NONE) { plugins.flatMap(Plugin::declaredSettings).distinctBy(PluginSetting<*, *>::path) } - fun read(reader: ReadingContext.() -> T): T = + fun read(reader: Reader.() -> T): T = settingWritingContext.reader() - fun write(writer: WritingContext.() -> T): T = + fun write(writer: Writer.() -> T): T = settingWritingContext.writer() - fun writeSettings(writer: SettingsWritingContext.() -> T): T = + fun writeSettings(writer: SettingsWriter.() -> T): T = settingWritingContext.writer() @@ -133,7 +133,7 @@ class Context private constructor( TaskSorter().sort(pipelineLineTasks, dependencyList) - open inner class ReadingContext { + open inner class Reader { val plugins: List get() = this@Context.plugins @@ -185,24 +185,24 @@ class Context private constructor( val SettingReference>.savedOrDefaultValue: V? get() = setting.getSavedValueForSetting() ?: when (val defaultValue = setting.defaultValue) { is SettingDefaultValue.Value -> defaultValue.value - is SettingDefaultValue.Dynamic -> defaultValue.getter(this@ReadingContext, this) + is SettingDefaultValue.Dynamic -> defaultValue.getter(this@Reader, this) null -> null } val > SettingReference.setting: Setting get() = with(this) { getSetting() } - inline operator fun invoke(reader: ReadingContext.() -> T): T = reader() + inline operator fun invoke(reader: Reader.() -> T): T = reader() } - open inner class WritingContext : ReadingContext() { + open inner class Writer : Reader() { val eventManager: EventManager get() = settingContext.eventManager fun Task1Reference.execute(value: A): TaskResult { @Suppress("UNCHECKED_CAST") val task = taskContext.getEntity(this) as Task1 - return task.action(this@WritingContext, value) + return task.action(this@Writer, value) } fun PropertyReference.update( @@ -219,9 +219,12 @@ class Context private constructor( fun PropertyReference>.addValues( values: List ): TaskResult = update { oldValues -> success(oldValues + values) } + + @JvmName("write") + inline operator fun invoke(writer: Writer.() -> T): T = writer() } - open inner class SettingsWritingContext : WritingContext() { + open inner class SettingsWriter : Writer() { fun > SettingReference.setValue(newValue: V) { settingContext[this] = newValue } @@ -232,10 +235,13 @@ class Context private constructor( setValue(defaultValue) } } + + @JvmName("writeSettings") + inline operator fun invoke(writer: SettingsWriter.() -> T): T = writer() } } -fun ReadingContext.getUnspecifiedSettings(phases: Set): List { +fun Reader.getUnspecifiedSettings(phases: Set): List { val required = plugins .flatMap { plugin -> plugin.declaredSettings.mapNotNull { setting -> @@ -248,6 +254,6 @@ fun ReadingContext.getUnspecifiedSettings(phases: Set): List(val validate: ReadingContext.(V) -> ValidationResult) { +inline class SettingValidator(val validate: Reader.(V) -> ValidationResult) { infix fun and(other: SettingValidator) = SettingValidator { value -> validate(value) and other.validate(this, value) } - operator fun ReadingContext.invoke(value: V) = validate(value) + operator fun Reader.invoke(value: V) = validate(value) } -fun settingValidator(validator: ReadingContext.(V) -> ValidationResult) = +fun settingValidator(validator: Reader.(V) -> ValidationResult) = SettingValidator(validator) -fun inValidatorContext(validator: ReadingContext.(V) -> SettingValidator) = +fun inValidatorContext(validator: Reader.(V) -> SettingValidator) = SettingValidator { value -> validator(value).validate(this, value) } @@ -95,7 +95,7 @@ interface Validatable { val validator: SettingValidator<@UnsafeVariance V> } -fun > ReadingContext.validateList(list: List) = settingValidator { +fun > Reader.validateList(list: List) = settingValidator { list.fold(ValidationResult.OK as ValidationResult) { result, value -> result and value.validator.validate(this, value).withTarget(value) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt index fe02e36c2d1..a484e3f788d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt @@ -15,12 +15,12 @@ sealed class Task : EntityBase() data class Task1( override val path: String, - val action: WritingContext.(A) -> TaskResult + val action: Writer.(A) -> TaskResult ) : Task() { class Builder(private val name: String) { - private var action: WritingContext.(A) -> TaskResult = { Failure() } + private var action: Writer.(A) -> TaskResult = { Failure() } - fun withAction(action: WritingContext.(A) -> TaskResult) { + fun withAction(action: Writer.(A) -> TaskResult) { this.action = action } @@ -30,7 +30,7 @@ data class Task1( data class PipelineTask( override val path: String, - val action: WritingContext.() -> TaskResult, + val action: Writer.() -> TaskResult, val before: List, val after: List, val phase: GenerationPhase, @@ -41,7 +41,7 @@ data class PipelineTask( private val name: String, private val phase: GenerationPhase ) { - private var action: WritingContext.() -> TaskResult = { UNIT_SUCCESS } + private var action: Writer.() -> TaskResult = { UNIT_SUCCESS } private val before = mutableListOf() private val after = mutableListOf() @@ -49,7 +49,7 @@ data class PipelineTask( var title: String? = null - fun withAction(action: WritingContext.() -> TaskResult) { + fun withAction(action: Writer.() -> TaskResult) { this.action = action } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/Setting.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/Setting.kt index acba107ba53..ef5e4b5d6e9 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/Setting.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/Setting.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings import org.jetbrains.kotlin.tools.projectWizard.core.ActivityCheckerOwner import org.jetbrains.kotlin.tools.projectWizard.core.Checker -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.Entity import org.jetbrains.kotlin.tools.projectWizard.core.entity.EntityWithValue @@ -58,7 +58,7 @@ class TemplateSetting>( sealed class SettingDefaultValue { data class Value(val value: V) : SettingDefaultValue() data class Dynamic( - val getter: ReadingContext.(SettingReference>) -> V + val getter: Reader.(SettingReference>) -> V ) : SettingDefaultValue() } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingBuilder.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingBuilder.kt index 715492f6fc4..4df13f6ee86 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingBuilder.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingBuilder.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult import org.jetbrains.kotlin.tools.projectWizard.core.entity.settingValidator @@ -17,13 +17,13 @@ abstract class SettingBuilder>( private val title: String, private val neededAtPhase: GenerationPhase ) { - var isAvailable: ReadingContext.() -> Boolean = { true } + var isAvailable: Reader.() -> Boolean = { true } open var defaultValue: SettingDefaultValue? = null var isSavable: Boolean = false var isRequired: Boolean? = null fun value(value: V) = SettingDefaultValue.Value(value) - fun dynamic(getter: ReadingContext.(SettingReference>) -> V) = + fun dynamic(getter: Reader.(SettingReference>) -> V) = SettingDefaultValue.Dynamic(getter) protected var validator = @@ -33,7 +33,7 @@ abstract class SettingBuilder>( this.validator = this.validator and validator } - fun validate(validator: ReadingContext.(V) -> ValidationResult) { + fun validate(validator: Reader.(V) -> ValidationResult) { this.validator = this.validator and settingValidator( validator ) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt index 28c3cb1c7a6..60c9518dd7e 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings import org.jetbrains.kotlin.tools.projectWizard.Identificator import org.jetbrains.kotlin.tools.projectWizard.core.Plugin -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.path import org.jetbrains.kotlin.tools.projectWizard.core.safeAs import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator @@ -21,7 +21,7 @@ sealed class SettingReference> { abstract val path: String abstract val type: KClass - abstract fun ReadingContext.getSetting(): Setting + abstract fun Reader.getSetting(): Setting final override fun toString() = path final override fun equals(other: Any?) = other.safeAs>()?.path == path @@ -40,7 +40,7 @@ data class PluginSettingReference>( constructor(setting: PluginSetting) : this(setting.path, setting.type::class as KClass) - override fun ReadingContext.getSetting(): Setting = pluginSetting + override fun Reader.getSetting(): Setting = pluginSetting } inline val > PluginSetting.reference: PluginSettingReference @@ -57,7 +57,7 @@ sealed class ModuleConfiguratorSettingReference> : S override val type: KClass get() = setting.type::class - override fun ReadingContext.getSetting(): Setting = setting + override fun Reader.getSetting(): Setting = setting abstract val module: Module? } @@ -89,7 +89,7 @@ sealed class TemplateSettingReference> : SettingRefe override val type: KClass get() = setting.type::class - override fun ReadingContext.getSetting(): Setting = setting + override fun Reader.getSetting(): Setting = setting abstract val module: Module? } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt index 3444a625f40..215822c1175 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt @@ -214,4 +214,4 @@ object PathSettingType : SettingType() { } } -typealias DropDownSettingTypeFilter = ReadingContext.(SettingReference>, V) -> Boolean \ No newline at end of file +typealias DropDownSettingTypeFilter = Reader.(SettingReference>, V) -> Boolean \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt index 8395c8f3f4a..5ad5eba55af 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt @@ -6,14 +6,14 @@ package org.jetbrains.kotlin.tools.projectWizard.core.service -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType interface BuildSystemAvailabilityWizardService : WizardService { fun isAvailable(buildSystemType: BuildSystemType): Boolean } -fun ReadingContext.isBuildSystemAvailable(buildSystemType: BuildSystemType) = +fun Reader.isBuildSystemAvailable(buildSystemType: BuildSystemType) = service().isAvailable(buildSystemType) class BuildSystemAvailabilityWizardServiceImpl : BuildSystemAvailabilityWizardService, IdeaIndependentWizardService { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt index f3d4b7e8eee..c0795e3d621 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt @@ -6,13 +6,13 @@ package org.jetbrains.kotlin.tools.projectWizard.core.service import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader interface RunConfigurationsService : WizardService { - fun ReadingContext.addRunConfigurations(configurations: List) + fun Reader.addRunConfigurations(configurations: List) } class RunConfigurationsServiceImpl : RunConfigurationsService, IdeaIndependentWizardService { - override fun ReadingContext.addRunConfigurations(configurations: List) = Unit + override fun Reader.addRunConfigurations(configurations: List) = Unit } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt index f18d1e2fc1b..85511a22fda 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt @@ -48,15 +48,15 @@ interface AndroidModuleConfigurator : ModuleConfigurator, listOf(AndroidPlugin::androidSdkPath.reference) override fun createBuildFileIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ) = buildList { - +GradleOnlyPluginByNameIR(readingContext.createAndroidPlugin(module).pluginName) + +GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName) +GradleOnlyPluginByNameIR("kotlin-android-extensions") +AndroidConfigIR( - when (readingContext.createAndroidPlugin(module)) { + when (reader.createAndroidPlugin(module)) { AndroidGradlePlugin.APPLICATION -> module.javaPackage(configurationData.pomIr) AndroidGradlePlugin.LIBRARY -> null } @@ -64,15 +64,15 @@ interface AndroidModuleConfigurator : ModuleConfigurator, +createRepositories(configurationData.kotlinVersion).map(::RepositoryIR) } - fun ReadingContext.createAndroidPlugin(module: Module): AndroidGradlePlugin + fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin - override fun ReadingContext.createSettingsGradleIRs(module: Module) = buildList { + override fun Reader.createSettingsGradleIRs(module: Module) = buildList { +createRepositories(KotlinPlugin::version.propertyValue).map { PluginManagementRepositoryIR(RepositoryIR(it)) } +AndroidResolutionStrategyIR(Versions.GradlePlugins.ANDROID) } override fun createModuleIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = @@ -128,7 +128,7 @@ object AndroidTargetConfigurator : TargetConfigurator, override val moduleSubType = ModuleSubType.android override val moduleType = ModuleType.jvm - override fun ReadingContext.createAndroidPlugin(module: Module): AndroidGradlePlugin = + override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin = withSettingsOf(module) { androidPlugin.reference.settingValue } override fun getConfiguratorSettings() = buildList> { @@ -136,7 +136,7 @@ object AndroidTargetConfigurator : TargetConfigurator, +androidPlugin } - override fun WritingContext.runArbitraryTask( + override fun Writer.runArbitraryTask( configurationData: ModuleConfigurationData, module: Module, modulePath: Path diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt index f89c1551464..1d78353b2ea 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt @@ -26,11 +26,11 @@ object AndroidSinglePlatformModuleConfigurator : override val requiresRootBuildFile: Boolean = true override fun createBuildFileIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ) = buildList { - +super.createBuildFileIRs(readingContext, configurationData, module) + +super.createBuildFileIRs(reader, configurationData, module) // it is explicitly here instead of by `createKotlinPluginIR` as it should be after `com.android.application` +KotlinBuildSystemPluginIR( @@ -46,11 +46,11 @@ object AndroidSinglePlatformModuleConfigurator : } override fun createModuleIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ) = buildList { - +super.createModuleIRs(readingContext, configurationData, module) + +super.createModuleIRs(reader, configurationData, module) +ArtifactBasedLibraryDependencyIR( MavenArtifact(DefaultRepository.GOOGLE, "androidx.appcompat", "appcompat"), @@ -65,7 +65,7 @@ object AndroidSinglePlatformModuleConfigurator : ) } - override fun WritingContext.runArbitraryTask( + override fun Writer.runArbitraryTask( configurationData: ModuleConfigurationData, module: Module, modulePath: Path @@ -81,6 +81,6 @@ object AndroidSinglePlatformModuleConfigurator : ) } - override fun ReadingContext.createAndroidPlugin(module: Module): AndroidGradlePlugin = + override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin = AndroidGradlePlugin.APPLICATION } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt index 09a61ab2120..1cb8cfb3c78 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt @@ -25,7 +25,7 @@ object IOSSinglePlatformModuleConfigurator : override val needCreateBuildFile: Boolean = false override val requiresRootBuildFile: Boolean = true - override fun WritingContext.runArbitraryTask( + override fun Writer.runArbitraryTask( configurationData: ModuleConfigurationData, module: Module, modulePath: Path diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt index 15c4820df1d..77a2aa926bc 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR @@ -37,7 +37,7 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi ) override fun createBuildFileIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = buildList { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt index 2f99cf19cc3..eb5f0bb0e24 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt @@ -164,7 +164,7 @@ interface ModuleConfiguratorWithSettings : ModuleConfigurator { fun getPluginSettings(): List>> = emptyList() - fun SettingsWritingContext.initDefaultValuesFor(module: Module) { + fun SettingsWriter.initDefaultValuesFor(module: Module) { withSettingsOf(module) { getConfiguratorSettings().forEach { setting -> setting.reference.setSettingValueToItsDefaultIfItIsNotSetValue() @@ -179,7 +179,7 @@ val ModuleConfigurator.settings else -> emptyList() } -fun ReadingContext.allSettingsOfModuleConfigurator(moduleConfigurator: ModuleConfigurator) = when (moduleConfigurator) { +fun Reader.allSettingsOfModuleConfigurator(moduleConfigurator: ModuleConfigurator) = when (moduleConfigurator) { is ModuleConfiguratorWithSettings -> buildList>> { +moduleConfigurator.getConfiguratorSettings() +moduleConfigurator.getPluginSettings().map { it.pluginSetting } @@ -205,14 +205,14 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { val requiresRootBuildFile: Boolean get() = false fun createBuildFileIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = emptyList() fun createModuleIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = @@ -225,7 +225,7 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? = null - fun WritingContext.runArbitraryTask( + fun Writer.runArbitraryTask( configurationData: ModuleConfigurationData, module: Module, modulePath: Path @@ -276,5 +276,5 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { } interface GradleModuleConfigurator : ModuleConfigurator { - fun ReadingContext.createSettingsGradleIRs(module: Module): List = emptyList() + fun Reader.createSettingsGradleIRs(module: Module): List = emptyList() } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt index 7820fd21b0d..fdfda5dc0e4 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSettingReference import org.jetbrains.kotlin.tools.projectWizard.core.safeAs @@ -39,12 +39,12 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings { fun defaultTestFramework(): KotlinTestFramework override fun createModuleIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = withSettingsOf(module) { - with(readingContext) { + reader { testFramework.reference.settingValue.dependencyNames.map { dependencyName -> KotlinArbitraryDependencyIR( dependencyName, diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index c7074f95499..d5ac4f3e815 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -1,7 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators import kotlinx.collections.immutable.toPersistentList -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR @@ -36,7 +36,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc override val text = "For Current System" - override fun ReadingContext.createTargetIrs( + override fun Reader.createTargetIrs( module: Module ): List { val moduleName = module.name @@ -79,7 +79,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc } override fun createBuildFileIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = buildList { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt index 8c22813cbda..5b85443c422 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt @@ -1,7 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators import kotlinx.collections.immutable.toPersistentList -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.core.buildPersistenceList @@ -23,9 +23,9 @@ interface TargetConfigurator : ModuleConfiguratorWithModuleType { fun canCoexistsWith(other: List): Boolean = true - fun ReadingContext.createTargetIrs(module: Module): List + fun Reader.createTargetIrs(module: Module): List fun createInnerTargetIrs( - readingContext: ReadingContext, + reader: Reader, module: Module ): List = emptyList() } @@ -46,7 +46,7 @@ interface SimpleTargetConfigurator : TargetConfigurator { override val suggestedModuleName: String? get() = moduleSubType.name - override fun ReadingContext.createTargetIrs( + override fun Reader.createTargetIrs( module: Module ): List = buildList { +DefaultTargetConfigurationIR( @@ -72,7 +72,7 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS - override fun ReadingContext.createTargetIrs( + override fun Reader.createTargetIrs( module: Module ): List = buildList { +DefaultTargetConfigurationIR( @@ -92,7 +92,7 @@ object JsNodeTargetConfigurator : JsTargetConfigurator { override val suggestedModuleName = "nodeJs" - override fun ReadingContext.createTargetIrs( + override fun Reader.createTargetIrs( module: Module ): List = buildList { +DefaultTargetConfigurationIR( @@ -123,10 +123,10 @@ object JvmTargetConfigurator : JvmModuleConfigurator, override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4 override fun createInnerTargetIrs( - readingContext: ReadingContext, + reader: Reader, module: Module ): List = buildList { - with(readingContext) { + reader { withSettingsOf(module) { val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value if (buildSystemType.isGradle) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt index a3953b9be7f..72f00cb1243 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt @@ -1,7 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators -import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting import org.jetbrains.kotlin.tools.projectWizard.core.safeAs @@ -91,7 +91,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator, override fun createBuildFileIRs( - readingContext: ReadingContext, + reader: Reader, configurationData: ModuleConfigurationData, module: Module ): List = @@ -99,7 +99,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator, +GradleImportIR("org.jetbrains.kotlin.gradle.tasks.KotlinCompile") val targetVersionValue = withSettingsOf(module) { - with(readingContext) { + reader { JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value } } 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 1ff4cb6b2ca..df9b469b84d 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 @@ -39,14 +39,14 @@ class StructurePlugin(context: Context) : Plugin(context) { } } -val ReadingContext.projectPath +val Reader.projectPath get() = StructurePlugin::projectPath.reference.settingValue -val ReadingContext.projectName +val Reader.projectName get() = StructurePlugin::name.reference.settingValue -fun WritingContext.pomIR() = PomIR( +fun Writer.pomIR() = PomIR( artifactId = StructurePlugin::artifactId.reference.settingValue, groupId = StructurePlugin::groupId.reference.settingValue, version = Version.fromString(StructurePlugin::version.reference.settingValue) 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 d97edffa8c0..3e5f7fbad48 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 @@ -126,12 +126,12 @@ val BuildSystemType.isGradle get() = this == BuildSystemType.GradleGroovyDsl || this == BuildSystemType.GradleKotlinDsl -val ReadingContext.allIRModules +val Reader.allIRModules get() = BuildSystemPlugin::buildFiles.propertyValue.flatMap { buildFile -> buildFile.modules.modules } -val WritingContext.allModulesPaths +val Writer.allModulesPaths get() = BuildSystemPlugin::buildFiles.propertyValue.flatMap { buildFile -> val paths = when (val structure = buildFile.modules) { is MultiplatformModulesStructureIR -> listOf(buildFile.directoryPath) @@ -146,6 +146,6 @@ val WritingContext.allModulesPaths } -val ReadingContext.buildSystemType: BuildSystemType +val Reader.buildSystemType: BuildSystemType get() = BuildSystemPlugin::type.reference.settingValue 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 288506383b6..f9c09230ba1 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 @@ -138,7 +138,7 @@ abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) { } } -val ReadingContext.settingsGradleBuildFileData +val Reader.settingsGradleBuildFileData get() = when (buildSystemType) { BuildSystemType.GradleKotlinDsl -> BuildFileData( 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 28dcdab3b20..5aa71fa0b77 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 @@ -100,7 +100,7 @@ class KotlinPlugin(context: Context) : Plugin(context) { } - private fun WritingContext.createBuildFiles(modules: List): TaskResult> = + private fun Writer.createBuildFiles(modules: List): TaskResult> = with( ModulesToIRsConverter( ModuleConfigurationData( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt index 8b2da44abe2..64fa7ffc838 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt @@ -21,7 +21,7 @@ data class ModuleConfigurationData( val kotlinVersion: Version, val buildSystemType: BuildSystemType, val pomIr: PomIR, - val writingContext: WritingContext + val writer: Writer ) { val allModules = rootModules.withAllSubModules() } @@ -61,7 +61,7 @@ class ModulesToIRsConverter( else -> rootPath / module.name } - fun ReadingContext.createBuildFiles(): TaskResult> = with(data) { + fun Reader.createBuildFiles(): TaskResult> = with(data) { val needExplicitRootBuildFile = !needFlattening val parentModuleHasTransitivelySpecifiedKotlinVersion = allModules.any { modules -> modules.configurator == AndroidSinglePlatformModuleConfigurator @@ -86,7 +86,7 @@ class ModulesToIRsConverter( } - private fun ReadingContext.createBuildFileForModule( + private fun Reader.createBuildFileForModule( module: Module, state: ModulesToIrsState ): TaskResult> = when (val configurator = module.configurator) { @@ -95,13 +95,13 @@ class ModulesToIRsConverter( else -> Success(emptyList()) } - private fun ReadingContext.createSinglePlatformModule( + private fun Reader.createSinglePlatformModule( module: Module, configurator: SinglePlatformModuleConfigurator, state: ModulesToIrsState ): TaskResult> = with(data) { val modulePath = calculatePathForModule(module, state.parentPath) - writingContext.mutateProjectStructureByModuleConfigurator(module, modulePath) + writer.mutateProjectStructureByModuleConfigurator(module, modulePath) val buildFileIR = run { if (!configurator.needCreateBuildFile) return@run null val dependenciesIRs = buildPersistenceList { @@ -159,12 +159,12 @@ class ModulesToIRsConverter( } } - private fun ReadingContext.createMultiplatformModule( + private fun Reader.createMultiplatformModule( module: Module, state: ModulesToIrsState ): TaskResult> = with(data) { val modulePath = calculatePathForModule(module, state.parentPath) - writingContext.mutateProjectStructureByModuleConfigurator(module, modulePath) + writer.mutateProjectStructureByModuleConfigurator(module, modulePath) val targetIrs = module.subModules.flatMap { subModule -> with(subModule.configurator as TargetConfigurator) { createTargetIrs(subModule) } } @@ -189,8 +189,8 @@ class ModulesToIRsConverter( ).asSingletonList().asSuccess() } - private fun ReadingContext.createTargetModule(target: Module, modulePath: Path): MultiplatformModuleIR { - data.writingContext.mutateProjectStructureByModuleConfigurator(target, modulePath) + private fun Reader.createTargetModule(target: Module, modulePath: Path): MultiplatformModuleIR { + data.writer.mutateProjectStructureByModuleConfigurator(target, modulePath) val sourcesetss = target.sourcesets.map { sourceset -> val sourcesetName = target.name + sourceset.sourcesetType.name.capitalize() val sourcesetIrs = buildList { @@ -226,7 +226,7 @@ class ModulesToIRsConverter( ) } - private fun WritingContext.mutateProjectStructureByModuleConfigurator( + private fun Writer.mutateProjectStructureByModuleConfigurator( module: Module, modulePath: Path ): TaskResult = with(module.configurator) { @@ -239,7 +239,7 @@ class ModulesToIRsConverter( } } - private fun ReadingContext.createBuildFileIRs( + private fun Reader.createBuildFileIRs( module: Module, state: ModulesToIrsState ) = buildPersistenceList { 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 8c555d53f5d..3437a376c85 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 @@ -20,7 +20,7 @@ class ProjectTemplatesPlugin(context: Context) : Plugin(context) { } } -fun SettingsWritingContext.applyProjectTemplate(projectTemplate: ProjectTemplate) { +fun SettingsWriter.applyProjectTemplate(projectTemplate: ProjectTemplate) { projectTemplate.setsValues.forEach { (setting, value) -> setting.setValue(value) } 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 d453be1aca7..9ecdf60c072 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 @@ -106,7 +106,7 @@ class TemplatesPlugin(context: Context) : Plugin(context) { } } - private fun WritingContext.applyFileTemplatesFromSourceset( + private fun Writer.applyFileTemplatesFromSourceset( module: ModuleIR, templateEngine: TemplateEngine, interceptionPointSettings: Map, Any> @@ -129,7 +129,7 @@ class TemplatesPlugin(context: Context) : Plugin(context) { }.sequenceIgnore() } - private fun WritingContext.defaultSettings(moduleIR: ModuleIR) = mapOf( + private fun Writer.defaultSettings(moduleIR: ModuleIR) = mapOf( "projectName" to projectName, "moduleName" to moduleIR.name ) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt index c86a4d6b252..24e8c35ce24 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt @@ -68,7 +68,7 @@ class Module( else -> "Module" } - fun SettingsWritingContext.initDefaultValuesForSettings() { + fun SettingsWriter.initDefaultValuesForSettings() { configurator.safeAs()?.apply { initDefaultValuesFor(this@Module) } template?.apply { initDefaultValuesFor(this@Module) } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt index 663265d0bd6..caddfd9c329 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt @@ -67,15 +67,15 @@ enum class SourcesetType: DisplayableSettingItem { } -fun WritingContext.updateBuildFiles(action: (BuildFileIR) -> TaskResult): TaskResult = +fun Writer.updateBuildFiles(action: (BuildFileIR) -> TaskResult): TaskResult = BuildSystemPlugin::buildFiles.update { buildFiles -> buildFiles.mapSequence(action) } -fun WritingContext.updateModules(action: (ModuleIR) -> TaskResult): TaskResult = +fun Writer.updateModules(action: (ModuleIR) -> TaskResult): TaskResult = updateBuildFiles { buildFile -> buildFile.withModulesUpdated { action(it) } } -fun WritingContext.forEachModule(action: (ModuleIR) -> TaskResult): TaskResult = +fun Writer.forEachModule(action: (ModuleIR) -> TaskResult): TaskResult = updateModules { moduleIR -> action(moduleIR).map { moduleIR } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt index b735dcb404e..8e3365dd376 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt @@ -1,6 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.templates -import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR @@ -19,7 +19,7 @@ class ConsoleJvmApplicationTemplate : Template() { """.trimIndent() override val moduleTypes: Set = setOf(ModuleType.jvm) - override fun WritingContext.getIrsToAddToBuildFile( + override fun Writer.getIrsToAddToBuildFile( module: ModuleIR ) = buildList { +runTaskIrs("MainKt") @@ -28,7 +28,7 @@ class ConsoleJvmApplicationTemplate : Template() { override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR = targetConfigurationIR.addWithJavaIntoJvmTarget() - override fun WritingContext.getFileTemplates(module: ModuleIR) = + override fun Writer.getFileTemplates(module: ModuleIR) = buildList { +(FileTemplateDescriptor("$id/main.kt.vm", "main.kt".asPath()) asSrcOf SourcesetType.main) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt index abc5a55a003..c95ba9bac9d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.tools.projectWizard.templates -import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.TemplateSetting @@ -29,7 +29,7 @@ class KtorServerTemplate : Template() { override val moduleTypes: Set = setOf(ModuleType.jvm) override val id: String = "ktorServer" - override fun WritingContext.getRequiredLibraries(module: ModuleIR): List = + override fun Writer.getRequiredLibraries(module: ModuleIR): List = withSettingsOf(module.originalModule) { buildList { +ktorArtifactDependency(serverEngine.reference.settingValue.dependencyName) @@ -42,7 +42,7 @@ class KtorServerTemplate : Template() { } } - override fun WritingContext.getIrsToAddToBuildFile(module: ModuleIR): List = buildList { + override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List = buildList { +RepositoryIR(Repositories.KTOR_BINTRAY) +RepositoryIR(DefaultRepository.JCENTER) +runTaskIrs(mainClass = "ServerKt") @@ -51,7 +51,7 @@ class KtorServerTemplate : Template() { override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR = targetConfigurationIR.addWithJavaIntoJvmTarget() - override fun WritingContext.getFileTemplates(module: ModuleIR): List = listOf( + override fun Writer.getFileTemplates(module: ModuleIR): List = listOf( FileTemplateDescriptor("$id/server.kt.vm", "server.kt".asPath()) asSrcOf SourcesetType.main ) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt index 69efa36bace..a1fb78e744e 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.tools.projectWizard.templates -import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR @@ -25,7 +25,7 @@ class NativeConsoleApplicationTemplate : Template() { override fun updateTargetIr(module: ModuleIR, targetConfigurationIR: TargetConfigurationIR): TargetConfigurationIR = targetConfigurationIR.withIrs(NativeTargetInternalIR("main")) - override fun WritingContext.getFileTemplates(module: ModuleIR): List = buildList { + override fun Writer.getFileTemplates(module: ModuleIR): List = buildList { +(FileTemplateDescriptor("$id/main.kt.vm", "main.kt".asPath()) asSrcOf SourcesetType.main) } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt index cf60f0d9b0b..d877b9f78e9 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt @@ -42,7 +42,7 @@ class SimpleJsClientTemplate : Template() { override val settings: List> = listOf(renderEngine) - override fun ReadingContext.createRunConfigurations(module: ModuleIR): List = buildList { + override fun Reader.createRunConfigurations(module: ModuleIR): List = buildList { if (module.originalModule.kind == ModuleKind.singleplatformJs) { +WizardGradleRunConfiguration( "BrowserDevelopmentRun in continuous mode", @@ -57,7 +57,7 @@ class SimpleJsClientTemplate : Template() { } } - override fun WritingContext.getRequiredLibraries(module: ModuleIR): List = withSettingsOf(module.originalModule) { + override fun Writer.getRequiredLibraries(module: ModuleIR): List = withSettingsOf(module.originalModule) { buildList { +ArtifactBasedLibraryDependencyIR( MavenArtifact(DefaultRepository.JCENTER, "org.jetbrains.kotlinx", "kotlinx-html-js"), @@ -81,7 +81,7 @@ class SimpleJsClientTemplate : Template() { } - override fun WritingContext.getFileTemplates(module: ModuleIR): List = + override fun Writer.getFileTemplates(module: ModuleIR): List = withSettingsOf(module.originalModule) { buildList { val hasKtorServNeighbourTarget = module.safeAs() @@ -200,7 +200,7 @@ class SimpleJsClientTemplate : Template() { } } - override fun WritingContext.getIrsToAddToBuildFile(module: ModuleIR): List = buildList { + override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List = buildList { +RepositoryIR(DefaultRepository.JCENTER) if (module is MultiplatformModuleIR) { +GradleImportIR("org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack") diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt index 3cb924d54f9..65c2fda481c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt @@ -75,7 +75,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor { open val settings: List> = emptyList() open val interceptionPoints: List> = emptyList() - fun SettingsWritingContext.initDefaultValuesFor(module: Module) { + fun SettingsWriter.initDefaultValuesFor(module: Module) { withSettingsOf(module) { settings.forEach { setting -> setting.reference.setSettingValueToItsDefaultIfItIsNotSetValue() @@ -83,10 +83,10 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor { } } - open fun WritingContext.getRequiredLibraries(module: ModuleIR): List = emptyList() + open fun Writer.getRequiredLibraries(module: ModuleIR): List = emptyList() //TODO: use setting reading context - open fun WritingContext.getIrsToAddToBuildFile( + open fun Writer.getIrsToAddToBuildFile( module: ModuleIR ): List = emptyList() @@ -95,13 +95,13 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor { targetConfigurationIR: TargetConfigurationIR ): TargetConfigurationIR = targetConfigurationIR - open fun WritingContext.getFileTemplates(module: ModuleIR): List = emptyList() + open fun Writer.getFileTemplates(module: ModuleIR): List = emptyList() open fun createInterceptors(module: ModuleIR): List = emptyList() - open fun ReadingContext.createRunConfigurations(module: ModuleIR): List = emptyList() + open fun Reader.createRunConfigurations(module: ModuleIR): List = emptyList() - fun WritingContext.applyToSourceset( + fun Writer.applyToSourceset( module: ModuleIR ): TaskResult { val librariesToAdd = getRequiredLibraries(module) @@ -121,7 +121,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor { return result.asSuccess() } - fun WritingContext.settingsAsMap(module: Module): Map = + fun Writer.settingsAsMap(module: Module): Map = withSettingsOf(module) { settings.associate { setting -> setting.path to setting.reference.settingValue @@ -129,7 +129,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor { } + createDefaultSettings() - private fun WritingContext.createDefaultSettings() = mapOf( + private fun Writer.createDefaultSettings() = mapOf( "projectName" to StructurePlugin::name.settingValue.capitalize() ) @@ -257,7 +257,7 @@ fun Template.settings(module: Module) = withSettingsOf(module) { settings.map { it.reference } } -fun WritingContext.applyTemplateToModule( +fun Writer.applyTemplateToModule( template: Template?, module: ModuleIR ): TaskResult = when (template) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt index a51febc3494..ab32d05a305 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt @@ -6,7 +6,7 @@ import org.apache.velocity.runtime.RuntimeConstants import org.apache.velocity.runtime.RuntimeServices import org.apache.velocity.runtime.log.LogChute import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult -import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext +import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.div import org.jetbrains.kotlin.tools.projectWizard.core.service.FileFormattingService @@ -17,7 +17,7 @@ import java.io.StringWriter interface TemplateEngine { fun renderTemplate(template: FileTemplateDescriptor, data: Map): String - fun WritingContext.writeTemplate(template: FileTemplate): TaskResult { + fun Writer.writeTemplate(template: FileTemplate): TaskResult { val formatter = service() val text = renderTemplate(template.descriptor, template.data).let { text -> formatter.formatFile(text, template.descriptor.relativePath.fileName.toString())