Wizard: rename ReadingContext -> Reader, WritingContext -> Writer
This commit is contained in:
+2
-2
@@ -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<WizardRunConfiguration>) {
|
||||
override fun Reader.addRunConfigurations(configurations: List<WizardRunConfiguration>) {
|
||||
configurations.forEach { wizardConfiguration ->
|
||||
if (wizardConfiguration is WizardGradleRunConfiguration && isBuildSystemAvailable(BuildSystemType.GradleKotlinDsl)) {
|
||||
addGradleRunConfiguration(wizardConfiguration)
|
||||
|
||||
+6
-6
@@ -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 <T> read(reader: ReadingContext.() -> T): T =
|
||||
protected fun <T> read(reader: Reader.() -> T): T =
|
||||
context.read(reader)
|
||||
|
||||
protected fun <T> write(writer: WritingContext.() -> T): T =
|
||||
protected fun <T> write(writer: Writer.() -> T): T =
|
||||
context.write(writer)
|
||||
|
||||
protected fun <T> modify(modifier: SettingsWritingContext.() -> T): T =
|
||||
protected fun <T> modify(modifier: SettingsWriter.() -> T): T =
|
||||
context.writeSettings(modifier)
|
||||
|
||||
open fun onValueUpdated(reference: SettingReference<*, *>?) {}
|
||||
|
||||
+2
-2
@@ -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<V : Any>(
|
||||
}
|
||||
}
|
||||
|
||||
fun <V : Any> ReadingContext.valueForSetting(
|
||||
fun <V : Any> Reader.valueForSetting(
|
||||
uiComponent: UIComponent<V>,
|
||||
setting: SettingReference<V, SettingType<V>>
|
||||
): V? = setting.savedOrDefaultValue ?: uiComponent.getUiValue()
|
||||
+1
-1
@@ -45,7 +45,7 @@ class YamlWizard(
|
||||
}
|
||||
}
|
||||
|
||||
fun ReadingContext.parseYaml(
|
||||
fun Reader.parseYaml(
|
||||
yaml: String,
|
||||
pluginSettings: List<PluginSetting<*, *>>
|
||||
): TaskResult<Map<SettingReference<*, *>, Any>> {
|
||||
|
||||
+2
-2
@@ -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)
|
||||
}
|
||||
+20
-14
@@ -22,19 +22,19 @@ class Context private constructor(
|
||||
) {
|
||||
private lateinit var plugins: List<Plugin>
|
||||
|
||||
private val settingWritingContext = SettingsWritingContext()
|
||||
private val settingWritingContext = SettingsWriter()
|
||||
|
||||
private val pluginSettings by lazy(LazyThreadSafetyMode.NONE) {
|
||||
plugins.flatMap(Plugin::declaredSettings).distinctBy(PluginSetting<*, *>::path)
|
||||
}
|
||||
|
||||
fun <T> read(reader: ReadingContext.() -> T): T =
|
||||
fun <T> read(reader: Reader.() -> T): T =
|
||||
settingWritingContext.reader()
|
||||
|
||||
fun <T> write(writer: WritingContext.() -> T): T =
|
||||
fun <T> write(writer: Writer.() -> T): T =
|
||||
settingWritingContext.writer()
|
||||
|
||||
fun <T> writeSettings(writer: SettingsWritingContext.() -> T): T =
|
||||
fun <T> 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<Plugin>
|
||||
get() = this@Context.plugins
|
||||
|
||||
@@ -185,24 +185,24 @@ class Context private constructor(
|
||||
val <V : Any> SettingReference<V, SettingType<V>>.savedOrDefaultValue: V?
|
||||
get() = setting.getSavedValueForSetting() ?: when (val defaultValue = setting.defaultValue) {
|
||||
is SettingDefaultValue.Value -> defaultValue.value
|
||||
is SettingDefaultValue.Dynamic<V> -> defaultValue.getter(this@ReadingContext, this)
|
||||
is SettingDefaultValue.Dynamic<V> -> defaultValue.getter(this@Reader, this)
|
||||
null -> null
|
||||
}
|
||||
|
||||
val <V : Any, T : SettingType<V>> SettingReference<V, T>.setting: Setting<V, T>
|
||||
get() = with(this) { getSetting() }
|
||||
|
||||
inline operator fun <T> invoke(reader: ReadingContext.() -> T): T = reader()
|
||||
inline operator fun <T> invoke(reader: Reader.() -> T): T = reader()
|
||||
}
|
||||
|
||||
open inner class WritingContext : ReadingContext() {
|
||||
open inner class Writer : Reader() {
|
||||
val eventManager: EventManager
|
||||
get() = settingContext.eventManager
|
||||
|
||||
fun <A, B : Any> Task1Reference<A, B>.execute(value: A): TaskResult<B> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val task = taskContext.getEntity(this) as Task1<A, B>
|
||||
return task.action(this@WritingContext, value)
|
||||
return task.action(this@Writer, value)
|
||||
}
|
||||
|
||||
fun <T : Any> PropertyReference<T>.update(
|
||||
@@ -219,9 +219,12 @@ class Context private constructor(
|
||||
fun <T : Any> PropertyReference<List<T>>.addValues(
|
||||
values: List<T>
|
||||
): TaskResult<Unit> = update { oldValues -> success(oldValues + values) }
|
||||
|
||||
@JvmName("write")
|
||||
inline operator fun <T> invoke(writer: Writer.() -> T): T = writer()
|
||||
}
|
||||
|
||||
open inner class SettingsWritingContext : WritingContext() {
|
||||
open inner class SettingsWriter : Writer() {
|
||||
fun <V : Any, T : SettingType<V>> SettingReference<V, T>.setValue(newValue: V) {
|
||||
settingContext[this] = newValue
|
||||
}
|
||||
@@ -232,10 +235,13 @@ class Context private constructor(
|
||||
setValue(defaultValue)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmName("writeSettings")
|
||||
inline operator fun <T> invoke(writer: SettingsWriter.() -> T): T = writer()
|
||||
}
|
||||
}
|
||||
|
||||
fun ReadingContext.getUnspecifiedSettings(phases: Set<GenerationPhase>): List<AnySetting> {
|
||||
fun Reader.getUnspecifiedSettings(phases: Set<GenerationPhase>): List<AnySetting> {
|
||||
val required = plugins
|
||||
.flatMap { plugin ->
|
||||
plugin.declaredSettings.mapNotNull { setting ->
|
||||
@@ -248,6 +254,6 @@ fun ReadingContext.getUnspecifiedSettings(phases: Set<GenerationPhase>): List<An
|
||||
}
|
||||
|
||||
|
||||
typealias ReadingContext = Context.ReadingContext
|
||||
typealias WritingContext = Context.WritingContext
|
||||
typealias SettingsWritingContext = Context.SettingsWritingContext
|
||||
typealias Reader = Context.Reader
|
||||
typealias Writer = Context.Writer
|
||||
typealias SettingsWriter = Context.SettingsWriter
|
||||
+6
-6
@@ -1,23 +1,23 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Failure
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ValidationError
|
||||
|
||||
|
||||
inline class SettingValidator<V>(val validate: ReadingContext.(V) -> ValidationResult) {
|
||||
inline class SettingValidator<V>(val validate: Reader.(V) -> ValidationResult) {
|
||||
infix fun and(other: SettingValidator<V>) = SettingValidator<V> { 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 <V> settingValidator(validator: ReadingContext.(V) -> ValidationResult) =
|
||||
fun <V> settingValidator(validator: Reader.(V) -> ValidationResult) =
|
||||
SettingValidator(validator)
|
||||
|
||||
fun <V> inValidatorContext(validator: ReadingContext.(V) -> SettingValidator<V>) =
|
||||
fun <V> inValidatorContext(validator: Reader.(V) -> SettingValidator<V>) =
|
||||
SettingValidator<V> { value ->
|
||||
validator(value).validate(this, value)
|
||||
}
|
||||
@@ -95,7 +95,7 @@ interface Validatable<out V> {
|
||||
val validator: SettingValidator<@UnsafeVariance V>
|
||||
}
|
||||
|
||||
fun <V, Q : Validatable<Q>> ReadingContext.validateList(list: List<Q>) = settingValidator<V> {
|
||||
fun <V, Q : Validatable<Q>> Reader.validateList(list: List<Q>) = settingValidator<V> {
|
||||
list.fold(ValidationResult.OK as ValidationResult) { result, value ->
|
||||
result and value.validator.validate(this, value).withTarget(value)
|
||||
}
|
||||
|
||||
+6
-6
@@ -15,12 +15,12 @@ sealed class Task : EntityBase()
|
||||
|
||||
data class Task1<A, B : Any>(
|
||||
override val path: String,
|
||||
val action: WritingContext.(A) -> TaskResult<B>
|
||||
val action: Writer.(A) -> TaskResult<B>
|
||||
) : Task() {
|
||||
class Builder<A, B : Any>(private val name: String) {
|
||||
private var action: WritingContext.(A) -> TaskResult<B> = { Failure() }
|
||||
private var action: Writer.(A) -> TaskResult<B> = { Failure() }
|
||||
|
||||
fun withAction(action: WritingContext.(A) -> TaskResult<B>) {
|
||||
fun withAction(action: Writer.(A) -> TaskResult<B>) {
|
||||
this.action = action
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ data class Task1<A, B : Any>(
|
||||
|
||||
data class PipelineTask(
|
||||
override val path: String,
|
||||
val action: WritingContext.() -> TaskResult<Unit>,
|
||||
val action: Writer.() -> TaskResult<Unit>,
|
||||
val before: List<PipelineTaskReference>,
|
||||
val after: List<PipelineTaskReference>,
|
||||
val phase: GenerationPhase,
|
||||
@@ -41,7 +41,7 @@ data class PipelineTask(
|
||||
private val name: String,
|
||||
private val phase: GenerationPhase
|
||||
) {
|
||||
private var action: WritingContext.() -> TaskResult<Unit> = { UNIT_SUCCESS }
|
||||
private var action: Writer.() -> TaskResult<Unit> = { UNIT_SUCCESS }
|
||||
private val before = mutableListOf<PipelineTaskReference>()
|
||||
private val after = mutableListOf<PipelineTaskReference>()
|
||||
|
||||
@@ -49,7 +49,7 @@ data class PipelineTask(
|
||||
|
||||
var title: String? = null
|
||||
|
||||
fun withAction(action: WritingContext.() -> TaskResult<Unit>) {
|
||||
fun withAction(action: Writer.() -> TaskResult<Unit>) {
|
||||
this.action = action
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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<out V : Any, out T : SettingType<V>>(
|
||||
sealed class SettingDefaultValue<out V : Any> {
|
||||
data class Value<V : Any>(val value: V) : SettingDefaultValue<V>()
|
||||
data class Dynamic<V : Any>(
|
||||
val getter: ReadingContext.(SettingReference<V, SettingType<V>>) -> V
|
||||
val getter: Reader.(SettingReference<V, SettingType<V>>) -> V
|
||||
) : SettingDefaultValue<V>()
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -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<V : Any, T : SettingType<V>>(
|
||||
private val title: String,
|
||||
private val neededAtPhase: GenerationPhase
|
||||
) {
|
||||
var isAvailable: ReadingContext.() -> Boolean = { true }
|
||||
var isAvailable: Reader.() -> Boolean = { true }
|
||||
open var defaultValue: SettingDefaultValue<V>? = null
|
||||
var isSavable: Boolean = false
|
||||
var isRequired: Boolean? = null
|
||||
|
||||
fun value(value: V) = SettingDefaultValue.Value(value)
|
||||
fun dynamic(getter: ReadingContext.(SettingReference<V, SettingType<V>>) -> V) =
|
||||
fun dynamic(getter: Reader.(SettingReference<V, SettingType<V>>) -> V) =
|
||||
SettingDefaultValue.Dynamic(getter)
|
||||
|
||||
protected var validator =
|
||||
@@ -33,7 +33,7 @@ abstract class SettingBuilder<V : Any, T : SettingType<V>>(
|
||||
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
|
||||
)
|
||||
|
||||
+5
-5
@@ -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<out V : Any, out T : SettingType<V>> {
|
||||
abstract val path: String
|
||||
abstract val type: KClass<out T>
|
||||
|
||||
abstract fun ReadingContext.getSetting(): Setting<V, T>
|
||||
abstract fun Reader.getSetting(): Setting<V, T>
|
||||
|
||||
final override fun toString() = path
|
||||
final override fun equals(other: Any?) = other.safeAs<SettingReference<*, *>>()?.path == path
|
||||
@@ -40,7 +40,7 @@ data class PluginSettingReference<out V : Any, out T : SettingType<V>>(
|
||||
constructor(setting: PluginSetting<V, T>) :
|
||||
this(setting.path, setting.type::class as KClass<T>)
|
||||
|
||||
override fun ReadingContext.getSetting(): Setting<V, T> = pluginSetting
|
||||
override fun Reader.getSetting(): Setting<V, T> = pluginSetting
|
||||
}
|
||||
|
||||
inline val <V : Any, reified T : SettingType<V>> PluginSetting<V, T>.reference: PluginSettingReference<V, T>
|
||||
@@ -57,7 +57,7 @@ sealed class ModuleConfiguratorSettingReference<V : Any, T : SettingType<V>> : S
|
||||
override val type: KClass<out T>
|
||||
get() = setting.type::class
|
||||
|
||||
override fun ReadingContext.getSetting(): Setting<V, T> = setting
|
||||
override fun Reader.getSetting(): Setting<V, T> = setting
|
||||
abstract val module: Module?
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ sealed class TemplateSettingReference<V : Any, T : SettingType<V>> : SettingRefe
|
||||
override val type: KClass<out T>
|
||||
get() = setting.type::class
|
||||
|
||||
override fun ReadingContext.getSetting(): Setting<V, T> = setting
|
||||
override fun Reader.getSetting(): Setting<V, T> = setting
|
||||
abstract val module: Module?
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -214,4 +214,4 @@ object PathSettingType : SettingType<Path>() {
|
||||
}
|
||||
}
|
||||
|
||||
typealias DropDownSettingTypeFilter <V> = ReadingContext.(SettingReference<V, DropDownSettingType<V>>, V) -> Boolean
|
||||
typealias DropDownSettingTypeFilter <V> = Reader.(SettingReference<V, DropDownSettingType<V>>, V) -> Boolean
|
||||
+2
-2
@@ -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<BuildSystemAvailabilityWizardService>().isAvailable(buildSystemType)
|
||||
|
||||
class BuildSystemAvailabilityWizardServiceImpl : BuildSystemAvailabilityWizardService, IdeaIndependentWizardService {
|
||||
|
||||
+3
-3
@@ -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<WizardRunConfiguration>)
|
||||
fun Reader.addRunConfigurations(configurations: List<WizardRunConfiguration>)
|
||||
}
|
||||
|
||||
class RunConfigurationsServiceImpl : RunConfigurationsService, IdeaIndependentWizardService {
|
||||
override fun ReadingContext.addRunConfigurations(configurations: List<WizardRunConfiguration>) = Unit
|
||||
override fun Reader.addRunConfigurations(configurations: List<WizardRunConfiguration>) = Unit
|
||||
}
|
||||
+8
-8
@@ -48,15 +48,15 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
||||
listOf(AndroidPlugin::androidSdkPath.reference)
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
readingContext: ReadingContext,
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+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<BuildSystemIR> {
|
||||
override fun Reader.createSettingsGradleIRs(module: Module) = buildList<BuildSystemIR> {
|
||||
+createRepositories(KotlinPlugin::version.propertyValue).map { PluginManagementRepositoryIR(RepositoryIR(it)) }
|
||||
+AndroidResolutionStrategyIR(Versions.GradlePlugins.ANDROID)
|
||||
}
|
||||
|
||||
override fun createModuleIRs(
|
||||
readingContext: ReadingContext,
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
@@ -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<ModuleConfiguratorSetting<*, *>> {
|
||||
@@ -136,7 +136,7 @@ object AndroidTargetConfigurator : TargetConfigurator,
|
||||
+androidPlugin
|
||||
}
|
||||
|
||||
override fun WritingContext.runArbitraryTask(
|
||||
override fun Writer.runArbitraryTask(
|
||||
configurationData: ModuleConfigurationData,
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
|
||||
+6
-6
@@ -26,11 +26,11 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
override val requiresRootBuildFile: Boolean = true
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
readingContext: ReadingContext,
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+super<AndroidModuleConfigurator>.createBuildFileIRs(readingContext, configurationData, module)
|
||||
+super<AndroidModuleConfigurator>.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<BuildSystemIR> {
|
||||
+super<AndroidModuleConfigurator>.createModuleIRs(readingContext, configurationData, module)
|
||||
+super<AndroidModuleConfigurator>.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
|
||||
}
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -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<BuildSystemIR> = buildList {
|
||||
|
||||
+6
-6
@@ -164,7 +164,7 @@ interface ModuleConfiguratorWithSettings : ModuleConfigurator {
|
||||
fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> = 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<Setting<Any, SettingType<Any>>> {
|
||||
+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<BuildSystemIR> =
|
||||
emptyList()
|
||||
|
||||
fun createModuleIRs(
|
||||
readingContext: ReadingContext,
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
@@ -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<BuildSystemIR> = emptyList()
|
||||
fun Reader.createSettingsGradleIRs(module: Module): List<BuildSystemIR> = emptyList()
|
||||
}
|
||||
+3
-3
@@ -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<BuildSystemIR> =
|
||||
withSettingsOf(module) {
|
||||
with(readingContext) {
|
||||
reader {
|
||||
testFramework.reference.settingValue.dependencyNames.map { dependencyName ->
|
||||
KotlinArbitraryDependencyIR(
|
||||
dependencyName,
|
||||
|
||||
+3
-3
@@ -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<BuildSystemIR> {
|
||||
val moduleName = module.name
|
||||
@@ -79,7 +79,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
||||
}
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
readingContext: ReadingContext,
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
|
||||
+8
-8
@@ -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<TargetConfigurator>): Boolean = true
|
||||
|
||||
fun ReadingContext.createTargetIrs(module: Module): List<BuildSystemIR>
|
||||
fun Reader.createTargetIrs(module: Module): List<BuildSystemIR>
|
||||
fun createInnerTargetIrs(
|
||||
readingContext: ReadingContext,
|
||||
reader: Reader,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = 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<BuildSystemIR> = 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<BuildSystemIR> = buildList {
|
||||
+DefaultTargetConfigurationIR(
|
||||
@@ -92,7 +92,7 @@ object JsNodeTargetConfigurator : JsTargetConfigurator {
|
||||
override val suggestedModuleName = "nodeJs"
|
||||
|
||||
|
||||
override fun ReadingContext.createTargetIrs(
|
||||
override fun Reader.createTargetIrs(
|
||||
module: Module
|
||||
): List<BuildSystemIR> = 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<BuildSystemIR> = buildList {
|
||||
with(readingContext) {
|
||||
reader {
|
||||
withSettingsOf(module) {
|
||||
val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
||||
if (buildSystemType.isGradle) {
|
||||
|
||||
+3
-3
@@ -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<BuildSystemIR> =
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -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)
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
|
||||
+1
-1
@@ -138,7 +138,7 @@ abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) {
|
||||
}
|
||||
}
|
||||
|
||||
val ReadingContext.settingsGradleBuildFileData
|
||||
val Reader.settingsGradleBuildFileData
|
||||
get() = when (buildSystemType) {
|
||||
BuildSystemType.GradleKotlinDsl ->
|
||||
BuildFileData(
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
}
|
||||
|
||||
|
||||
private fun WritingContext.createBuildFiles(modules: List<Module>): TaskResult<List<BuildFileIR>> =
|
||||
private fun Writer.createBuildFiles(modules: List<Module>): TaskResult<List<BuildFileIR>> =
|
||||
with(
|
||||
ModulesToIRsConverter(
|
||||
ModuleConfigurationData(
|
||||
|
||||
+11
-11
@@ -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<List<BuildFileIR>> = with(data) {
|
||||
fun Reader.createBuildFiles(): TaskResult<List<BuildFileIR>> = 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<List<BuildFileIR>> = 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<List<BuildFileIR>> = 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<BuildSystemIR> {
|
||||
@@ -159,12 +159,12 @@ class ModulesToIRsConverter(
|
||||
}
|
||||
}
|
||||
|
||||
private fun ReadingContext.createMultiplatformModule(
|
||||
private fun Reader.createMultiplatformModule(
|
||||
module: Module,
|
||||
state: ModulesToIrsState
|
||||
): TaskResult<List<BuildFileIR>> = 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<BuildSystemIR> {
|
||||
@@ -226,7 +226,7 @@ class ModulesToIRsConverter(
|
||||
)
|
||||
}
|
||||
|
||||
private fun WritingContext.mutateProjectStructureByModuleConfigurator(
|
||||
private fun Writer.mutateProjectStructureByModuleConfigurator(
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> = with(module.configurator) {
|
||||
@@ -239,7 +239,7 @@ class ModulesToIRsConverter(
|
||||
}
|
||||
}
|
||||
|
||||
private fun ReadingContext.createBuildFileIRs(
|
||||
private fun Reader.createBuildFileIRs(
|
||||
module: Module,
|
||||
state: ModulesToIrsState
|
||||
) = buildPersistenceList<BuildSystemIR> {
|
||||
|
||||
+1
-1
@@ -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)
|
||||
}
|
||||
|
||||
+2
-2
@@ -106,7 +106,7 @@ class TemplatesPlugin(context: Context) : Plugin(context) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun WritingContext.applyFileTemplatesFromSourceset(
|
||||
private fun Writer.applyFileTemplatesFromSourceset(
|
||||
module: ModuleIR,
|
||||
templateEngine: TemplateEngine,
|
||||
interceptionPointSettings: Map<InterceptionPoint<Any>, 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
|
||||
)
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ class Module(
|
||||
else -> "Module"
|
||||
}
|
||||
|
||||
fun SettingsWritingContext.initDefaultValuesForSettings() {
|
||||
fun SettingsWriter.initDefaultValuesForSettings() {
|
||||
configurator.safeAs<ModuleConfiguratorWithSettings>()?.apply { initDefaultValuesFor(this@Module) }
|
||||
template?.apply { initDefaultValuesFor(this@Module) }
|
||||
}
|
||||
|
||||
+3
-3
@@ -67,15 +67,15 @@ enum class SourcesetType: DisplayableSettingItem {
|
||||
}
|
||||
|
||||
|
||||
fun WritingContext.updateBuildFiles(action: (BuildFileIR) -> TaskResult<BuildFileIR>): TaskResult<Unit> =
|
||||
fun Writer.updateBuildFiles(action: (BuildFileIR) -> TaskResult<BuildFileIR>): TaskResult<Unit> =
|
||||
BuildSystemPlugin::buildFiles.update { buildFiles ->
|
||||
buildFiles.mapSequence(action)
|
||||
}
|
||||
|
||||
fun WritingContext.updateModules(action: (ModuleIR) -> TaskResult<ModuleIR>): TaskResult<Unit> =
|
||||
fun Writer.updateModules(action: (ModuleIR) -> TaskResult<ModuleIR>): TaskResult<Unit> =
|
||||
updateBuildFiles { buildFile ->
|
||||
buildFile.withModulesUpdated { action(it) }
|
||||
}
|
||||
|
||||
fun WritingContext.forEachModule(action: (ModuleIR) -> TaskResult<Unit>): TaskResult<Unit> =
|
||||
fun Writer.forEachModule(action: (ModuleIR) -> TaskResult<Unit>): TaskResult<Unit> =
|
||||
updateModules { moduleIR -> action(moduleIR).map { moduleIR } }
|
||||
+3
-3
@@ -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<ModuleType> = setOf(ModuleType.jvm)
|
||||
|
||||
override fun WritingContext.getIrsToAddToBuildFile(
|
||||
override fun Writer.getIrsToAddToBuildFile(
|
||||
module: ModuleIR
|
||||
) = buildList<BuildSystemIR> {
|
||||
+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<FileTemplateDescriptorWithPath> {
|
||||
+(FileTemplateDescriptor("$id/main.kt.vm", "main.kt".asPath()) asSrcOf SourcesetType.main)
|
||||
}
|
||||
|
||||
+4
-4
@@ -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<ModuleType> = setOf(ModuleType.jvm)
|
||||
override val id: String = "ktorServer"
|
||||
|
||||
override fun WritingContext.getRequiredLibraries(module: ModuleIR): List<DependencyIR> =
|
||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> =
|
||||
withSettingsOf(module.originalModule) {
|
||||
buildList {
|
||||
+ktorArtifactDependency(serverEngine.reference.settingValue.dependencyName)
|
||||
@@ -42,7 +42,7 @@ class KtorServerTemplate : Template() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun WritingContext.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = buildList {
|
||||
override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = 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<FileTemplateDescriptorWithPath> = listOf(
|
||||
override fun Writer.getFileTemplates(module: ModuleIR): List<FileTemplateDescriptorWithPath> = listOf(
|
||||
FileTemplateDescriptor("$id/server.kt.vm", "server.kt".asPath()) asSrcOf SourcesetType.main
|
||||
)
|
||||
|
||||
|
||||
+2
-2
@@ -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<FileTemplateDescriptorWithPath> = buildList {
|
||||
override fun Writer.getFileTemplates(module: ModuleIR): List<FileTemplateDescriptorWithPath> = buildList {
|
||||
+(FileTemplateDescriptor("$id/main.kt.vm", "main.kt".asPath()) asSrcOf SourcesetType.main)
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -42,7 +42,7 @@ class SimpleJsClientTemplate : Template() {
|
||||
|
||||
override val settings: List<TemplateSetting<*, *>> = listOf(renderEngine)
|
||||
|
||||
override fun ReadingContext.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = buildList {
|
||||
override fun Reader.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = 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<DependencyIR> = withSettingsOf(module.originalModule) {
|
||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = 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<FileTemplateDescriptorWithPath> =
|
||||
override fun Writer.getFileTemplates(module: ModuleIR): List<FileTemplateDescriptorWithPath> =
|
||||
withSettingsOf(module.originalModule) {
|
||||
buildList {
|
||||
val hasKtorServNeighbourTarget = module.safeAs<MultiplatformModuleIR>()
|
||||
@@ -200,7 +200,7 @@ class SimpleJsClientTemplate : Template() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun WritingContext.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = buildList {
|
||||
override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = buildList {
|
||||
+RepositoryIR(DefaultRepository.JCENTER)
|
||||
if (module is MultiplatformModuleIR) {
|
||||
+GradleImportIR("org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack")
|
||||
|
||||
+9
-9
@@ -75,7 +75,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor {
|
||||
open val settings: List<TemplateSetting<*, *>> = emptyList()
|
||||
open val interceptionPoints: List<InterceptionPoint<Any>> = 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<DependencyIR> = emptyList()
|
||||
open fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> = emptyList()
|
||||
|
||||
//TODO: use setting reading context
|
||||
open fun WritingContext.getIrsToAddToBuildFile(
|
||||
open fun Writer.getIrsToAddToBuildFile(
|
||||
module: ModuleIR
|
||||
): List<BuildSystemIR> = emptyList()
|
||||
|
||||
@@ -95,13 +95,13 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor {
|
||||
targetConfigurationIR: TargetConfigurationIR
|
||||
): TargetConfigurationIR = targetConfigurationIR
|
||||
|
||||
open fun WritingContext.getFileTemplates(module: ModuleIR): List<FileTemplateDescriptorWithPath> = emptyList()
|
||||
open fun Writer.getFileTemplates(module: ModuleIR): List<FileTemplateDescriptorWithPath> = emptyList()
|
||||
|
||||
open fun createInterceptors(module: ModuleIR): List<TemplateInterceptor> = emptyList()
|
||||
|
||||
open fun ReadingContext.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = emptyList()
|
||||
open fun Reader.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = emptyList()
|
||||
|
||||
fun WritingContext.applyToSourceset(
|
||||
fun Writer.applyToSourceset(
|
||||
module: ModuleIR
|
||||
): TaskResult<TemplateApplicationResult> {
|
||||
val librariesToAdd = getRequiredLibraries(module)
|
||||
@@ -121,7 +121,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor {
|
||||
return result.asSuccess()
|
||||
}
|
||||
|
||||
fun WritingContext.settingsAsMap(module: Module): Map<String, Any> =
|
||||
fun Writer.settingsAsMap(module: Module): Map<String, Any> =
|
||||
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<TemplateApplicationResult> = when (template) {
|
||||
|
||||
+2
-2
@@ -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, Any?>): String
|
||||
|
||||
fun WritingContext.writeTemplate(template: FileTemplate): TaskResult<Unit> {
|
||||
fun Writer.writeTemplate(template: FileTemplate): TaskResult<Unit> {
|
||||
val formatter = service<FileFormattingService>()
|
||||
val text = renderTemplate(template.descriptor, template.data).let { text ->
|
||||
formatter.formatFile(text, template.descriptor.relativePath.fileName.toString())
|
||||
|
||||
Reference in New Issue
Block a user