Wizard: introduce ModuleConfiguratorProperty
This commit is contained in:
committed by
Kirill Shmakov
parent
74d6919c7c
commit
dbc43b66bf
+2
-5
@@ -6,18 +6,15 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.service
|
||||
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix
|
||||
import com.intellij.ide.impl.NewProjectUtil
|
||||
import com.intellij.ide.util.projectWizard.ModuleBuilder
|
||||
import com.intellij.jarRepository.JarRepositoryManager
|
||||
import com.intellij.jarRepository.RemoteRepositoryDescription
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
||||
import com.intellij.openapi.module.ModifiableModuleModel
|
||||
import com.intellij.openapi.module.ModuleTypeId
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.*
|
||||
import com.intellij.openapi.roots.libraries.ui.OrderRoot
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.util.PathUtil
|
||||
import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties
|
||||
@@ -41,7 +38,7 @@ import org.jetbrains.kotlin.tools.projectWizard.wizard.NewProjectWizardModuleBui
|
||||
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JvmModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.withSettingsOf
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.inContextOfModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
||||
import java.nio.file.Path
|
||||
import java.util.*
|
||||
@@ -116,7 +113,7 @@ private class JpsModuleConfigurationUpdater(
|
||||
}
|
||||
|
||||
private fun ModuleIR.jvmTarget() = reader {
|
||||
withSettingsOf(originalModule) {
|
||||
inContextOfModuleConfigurator(originalModule) {
|
||||
JvmModuleConfigurator.targetJvmVersion.reference.settingValue
|
||||
}
|
||||
}
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PropertyBuilder
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
|
||||
interface PropertiesOwner {
|
||||
fun <T : Any> propertyDelegate(
|
||||
create: (path: String) -> PropertyBuilder<T>
|
||||
): ReadOnlyProperty<Any, Property<T>>
|
||||
|
||||
fun <T : Any> property(
|
||||
defaultValue: T,
|
||||
init: PropertyBuilder<T>.() -> Unit = {}
|
||||
): ReadOnlyProperty<Any, Property<T>> =
|
||||
propertyDelegate { path -> PropertyBuilder(path, defaultValue).apply(init) }
|
||||
|
||||
fun <T : Any> listProperty(vararg defaultValues: T, init: PropertyBuilder<List<T>>.() -> Unit = {}) =
|
||||
property(defaultValues.toList(), init)
|
||||
}
|
||||
+23
@@ -1,6 +1,10 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PluginProperty
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PluginPropertyReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PropertyContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PropertyReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.SettingSavingWizardService
|
||||
@@ -109,9 +113,16 @@ class Context private constructor(
|
||||
fun <S : WizardService> serviceByClass(klass: KClass<S>, filter: (S) -> Boolean = { true }): S =
|
||||
servicesManager.serviceByClass(klass, filter) ?: error("Service ${klass.simpleName} was not found")
|
||||
|
||||
|
||||
val <T : Any> PluginProperty<T>.reference: PluginPropertyReference<T>
|
||||
get() = PluginPropertyReference(this)
|
||||
|
||||
val <T : Any> PluginProperty<T>.propertyValue: T
|
||||
get() = propertyContext[this] ?: error("No value is present for property `$this`")
|
||||
|
||||
val <T : Any> PropertyReference<T>.propertyValue: T
|
||||
get() = propertyContext[this] ?: error("No value is present for property `$this`")
|
||||
|
||||
val <V : Any, T : SettingType<V>> SettingReference<V, T>.settingValue: V
|
||||
get() = settingContext[this] ?: error("No value is present for setting `$this`")
|
||||
|
||||
@@ -171,6 +182,10 @@ class Context private constructor(
|
||||
|
||||
fun <T : Any> PluginProperty<T>.update(
|
||||
updater: suspend ComputeContext<*>.(T) -> TaskResult<T>
|
||||
): TaskResult<Unit> = reference.update(updater)
|
||||
|
||||
fun <T : Any> PropertyReference<T>.update(
|
||||
updater: suspend ComputeContext<*>.(T) -> TaskResult<T>
|
||||
): TaskResult<Unit> = compute {
|
||||
val (newValue) = updater(propertyValue)
|
||||
propertyContext[this@update] = newValue
|
||||
@@ -182,6 +197,10 @@ class Context private constructor(
|
||||
|
||||
fun <T : Any> PluginProperty<List<T>>.addValues(
|
||||
values: List<T>
|
||||
): TaskResult<Unit> = reference.addValues(values)
|
||||
|
||||
fun <T : Any> PropertyReference<List<T>>.addValues(
|
||||
values: List<T>
|
||||
): TaskResult<Unit> = update { oldValues -> success(oldValues + values) }
|
||||
|
||||
@JvmName("write")
|
||||
@@ -193,6 +212,10 @@ class Context private constructor(
|
||||
settingContext[this] = newValue
|
||||
}
|
||||
|
||||
fun <V : Any> PropertyReference<V>.initDefaultValue(newValue: V) {
|
||||
propertyContext[this] = property.defaultValue
|
||||
}
|
||||
|
||||
fun <V : Any, T : SettingType<V>> SettingReference<V, T>.setSettingValueToItsDefaultIfItIsNotSetValue() {
|
||||
val defaultValue = savedOrDefaultValue ?: return
|
||||
if (notRequiredSettingValue == null) {
|
||||
|
||||
+3
@@ -3,6 +3,9 @@ package org.jetbrains.kotlin.tools.projectWizard.core
|
||||
import org.jetbrains.kotlin.tools.projectWizard.PropertiesOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PluginProperty
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.PropertyBuilder
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
|
||||
abstract class EntityReference {
|
||||
abstract val path: String
|
||||
|
||||
final override fun toString() = path
|
||||
final override fun equals(other: Any?) = other.safeAs<SettingReference<*, *>>()?.path == path
|
||||
final override fun hashCode() = path.hashCode()
|
||||
}
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
|
||||
class PropertyContext : ValuedEntityContext<Property<Any>>()
|
||||
|
||||
interface Property<out T : Any> : Entity {
|
||||
val defaultValue: T
|
||||
}
|
||||
|
||||
data class InternalProperty<out T : Any>(
|
||||
override val path: String,
|
||||
override val defaultValue: T,
|
||||
) : Property<T>, EntityWithValue<T>()
|
||||
|
||||
sealed class PropertyImpl<out T : Any> : Property<T>
|
||||
|
||||
class PluginProperty<out T : Any>(
|
||||
internal: Property<T>
|
||||
) : PropertyImpl<T>(), Property<T> by internal
|
||||
|
||||
class PropertyBuilder<T : Any>(
|
||||
private val name: String,
|
||||
private val defaultValue: T
|
||||
) {
|
||||
fun build(): Property<T> = InternalProperty(name, defaultValue)
|
||||
}
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
|
||||
abstract class ValuedEntityContext<E : Entity> {
|
||||
private val values = mutableMapOf<String, Any>()
|
||||
protected val values = mutableMapOf<String, Any>()
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
operator fun <V : Any> get(entity: E) =
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity.properties
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Entity
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.EntityWithValue
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValuedEntityContext
|
||||
|
||||
class PropertyContext : ValuedEntityContext<Property<Any>>() {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
operator fun <V : Any> get(entity: PropertyReference<V>) =
|
||||
values[entity.path] as? V
|
||||
|
||||
operator fun <V : Any> set(entity: PropertyReference<V>, value: Any) {
|
||||
values[entity.path] = value
|
||||
}
|
||||
}
|
||||
|
||||
interface Property<out T : Any> : Entity {
|
||||
val defaultValue: T
|
||||
}
|
||||
|
||||
data class InternalProperty<out T : Any>(
|
||||
override val path: String,
|
||||
override val defaultValue: T,
|
||||
) : Property<T>, EntityWithValue<T>()
|
||||
|
||||
sealed class PropertyImpl<out T : Any> : Property<T>
|
||||
|
||||
class PluginProperty<out T : Any>(
|
||||
internal: Property<T>
|
||||
) : PropertyImpl<T>(), Property<T> by internal
|
||||
|
||||
class ModuleConfiguratorProperty<out T : Any>(
|
||||
internal: Property<T>
|
||||
) : PropertyImpl<T>(), Property<T> by internal
|
||||
|
||||
|
||||
class PropertyBuilder<T : Any>(
|
||||
private val name: String,
|
||||
private val defaultValue: T
|
||||
) {
|
||||
fun build(): Property<T> = InternalProperty(name, defaultValue)
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity.properties
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.EntityReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
|
||||
sealed class PropertyReference<out T : Any> : EntityReference() {
|
||||
abstract val property: Property<T>
|
||||
}
|
||||
|
||||
class PluginPropertyReference<out T: Any>(override val property: PluginProperty<T>): PropertyReference<T>() {
|
||||
override val path: String
|
||||
get() = property.path
|
||||
}
|
||||
|
||||
class ModuleConfiguratorPropertyReference<out T : Any>(
|
||||
val configurator: ModuleConfigurator,
|
||||
val module: Module,
|
||||
override val property: ModuleConfiguratorProperty<T>
|
||||
) : PropertyReference<T>() {
|
||||
override val path: String
|
||||
get() = "${configurator.id}/${module.identificator}/${property.path}"
|
||||
}
|
||||
+2
-9
@@ -5,26 +5,19 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
||||
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.EntityReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
|
||||
sealed class SettingReference<out V : Any, out T : SettingType<V>> {
|
||||
@get:NonNls
|
||||
abstract val path: String
|
||||
sealed class SettingReference<out V : Any, out T : SettingType<V>>: EntityReference() {
|
||||
abstract val type: KClass<out T>
|
||||
|
||||
abstract fun Reader.getSetting(): Setting<V, T>
|
||||
|
||||
final override fun toString() = path
|
||||
final override fun equals(other: Any?) = other.safeAs<SettingReference<*, *>>()?.path == path
|
||||
final override fun hashCode() = path.hashCode()
|
||||
}
|
||||
|
||||
data class PluginSettingReference<out V : Any, out T : SettingType<V>>(
|
||||
|
||||
+1
-1
@@ -140,7 +140,7 @@ object AndroidTargetConfigurator : TargetConfigurator,
|
||||
override val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
|
||||
|
||||
override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin =
|
||||
withSettingsOf(module) { androidPlugin.reference.settingValue }
|
||||
inContextOfModuleConfigurator(module) { androidPlugin.reference.settingValue }
|
||||
|
||||
override fun getConfiguratorSettings() = buildList<ModuleConfiguratorSetting<*, *>> {
|
||||
+super.getConfiguratorSettings()
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M
|
||||
}
|
||||
|
||||
private fun Reader.createTemplatesSettingValues(module: Module): Map<String, Any?> {
|
||||
val dependentModule = withSettingsOf(module) {
|
||||
val dependentModule = inContextOfModuleConfigurator(module) {
|
||||
dependentModule.reference.notRequiredSettingValue?.module
|
||||
}
|
||||
|
||||
|
||||
+59
-15
@@ -2,8 +2,10 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.PropertiesOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
@@ -21,41 +23,49 @@ import java.nio.file.Path
|
||||
import kotlin.properties.ReadOnlyProperty
|
||||
|
||||
|
||||
interface ModuleConfiguratorSettingsEnvironment {
|
||||
interface ModuleConfiguratorContext {
|
||||
val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
||||
|
||||
val <T : Any> ModuleConfiguratorProperty<T>.reference: PropertyReference<T>
|
||||
}
|
||||
|
||||
class ModuleBasedConfiguratorSettingsEnvironment(
|
||||
class ModuleBasedConfiguratorContext(
|
||||
private val configurator: ModuleConfigurator,
|
||||
private val module: Module
|
||||
) : ModuleConfiguratorSettingsEnvironment {
|
||||
) : ModuleConfiguratorContext {
|
||||
override val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
||||
get() = ModuleBasedConfiguratorSettingReference(configurator, module, this)
|
||||
|
||||
override val <T : Any> ModuleConfiguratorProperty<T>.reference: PropertyReference<T>
|
||||
get() = ModuleConfiguratorPropertyReference<T>(configurator, module, this)
|
||||
}
|
||||
|
||||
class IdBasedConfiguratorSettingsEnvironment(
|
||||
class IdBasedConfiguratorContext(
|
||||
private val configurator: ModuleConfigurator,
|
||||
private val moduleId: Identificator
|
||||
) : ModuleConfiguratorSettingsEnvironment {
|
||||
) : ModuleConfiguratorContext {
|
||||
override val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
||||
get() = IdBasedConfiguratorSettingReference(configurator, moduleId, this)
|
||||
|
||||
override val <T : Any> ModuleConfiguratorProperty<T>.reference: PropertyReference<T>
|
||||
get() = error("Should not be called as IdBasedConfiguratorContext used only for parsing settings")
|
||||
}
|
||||
|
||||
fun <T> withSettingsOf(
|
||||
fun <T> inContextOfModuleConfigurator(
|
||||
moduleId: Identificator,
|
||||
configurator: ModuleConfigurator,
|
||||
function: ModuleConfiguratorSettingsEnvironment.() -> T
|
||||
): T = function(IdBasedConfiguratorSettingsEnvironment(configurator, moduleId))
|
||||
function: ModuleConfiguratorContext.() -> T
|
||||
): T = function(IdBasedConfiguratorContext(configurator, moduleId))
|
||||
|
||||
fun <T> withSettingsOf(
|
||||
fun <T> inContextOfModuleConfigurator(
|
||||
module: Module,
|
||||
configurator: ModuleConfigurator = module.configurator,
|
||||
function: ModuleConfiguratorSettingsEnvironment.() -> T
|
||||
): T = function(ModuleBasedConfiguratorSettingsEnvironment(configurator, module))
|
||||
function: ModuleConfiguratorContext.() -> T
|
||||
): T = function(ModuleBasedConfiguratorContext(configurator, module))
|
||||
|
||||
|
||||
fun <V : Any, T : SettingType<V>> Reader.settingValue(module: Module, setting: ModuleConfiguratorSetting<V, T>): V? =
|
||||
withSettingsOf(module) {
|
||||
inContextOfModuleConfigurator(module) {
|
||||
setting.reference.notRequiredSettingValue
|
||||
}
|
||||
|
||||
@@ -166,13 +176,47 @@ abstract class ModuleConfiguratorSettings : SettingsOwner {
|
||||
enumSettingImpl(title, neededAtPhase, init) as ReadOnlyProperty<Any, ModuleConfiguratorSetting<E, DropDownSettingType<E>>>
|
||||
}
|
||||
|
||||
interface ModuleConfiguratorWithProperties : ModuleConfigurator {
|
||||
fun getConfiguratorProperties(): List<ModuleConfiguratorProperty<*>>
|
||||
|
||||
fun SettingsWriter.initDefaultValuesForProperties(module: Module) {
|
||||
inContextOfModuleConfigurator(module) {
|
||||
getConfiguratorProperties().forEach { property ->
|
||||
property.reference.initDefaultValue(module)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface ModuleConfiguratorProperties : PropertiesOwner {
|
||||
override fun <T : Any> propertyDelegate(
|
||||
create: (path: String) -> PropertyBuilder<T>,
|
||||
): ReadOnlyProperty<Any, ModuleConfiguratorProperty<T>> =
|
||||
cached { name -> ModuleConfiguratorProperty(create(name).build()) }
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : Any> property(
|
||||
defaultValue: T,
|
||||
init: PropertyBuilder<T>.() -> Unit,
|
||||
): ReadOnlyProperty<Any, ModuleConfiguratorProperty<T>> =
|
||||
super.property(defaultValue, init) as ReadOnlyProperty<Any, ModuleConfiguratorProperty<T>>
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T : Any> listProperty(
|
||||
vararg defaultValues: T,
|
||||
init: PropertyBuilder<List<T>>.() -> Unit
|
||||
): ReadOnlyProperty<Any, ModuleConfiguratorProperty<List<T>>> =
|
||||
super.listProperty(defaultValues = defaultValues, init) as ReadOnlyProperty<Any, ModuleConfiguratorProperty<List<T>>>
|
||||
}
|
||||
|
||||
|
||||
interface ModuleConfiguratorWithSettings : ModuleConfigurator {
|
||||
fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> = emptyList()
|
||||
fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> = emptyList()
|
||||
|
||||
|
||||
fun SettingsWriter.initDefaultValuesFor(module: Module) {
|
||||
withSettingsOf(module) {
|
||||
inContextOfModuleConfigurator(module) {
|
||||
getConfiguratorSettings().forEach { setting ->
|
||||
setting.reference.setSettingValueToItsDefaultIfItIsNotSetValue()
|
||||
}
|
||||
@@ -180,7 +224,7 @@ interface ModuleConfiguratorWithSettings : ModuleConfigurator {
|
||||
}
|
||||
|
||||
fun <V : Any, T : SettingType<V>> Reader.settingsValue(module: Module, setting: ModuleConfiguratorSetting<V, T>): V =
|
||||
withSettingsOf(module) { setting.reference.settingValue }
|
||||
inContextOfModuleConfigurator(module) { setting.reference.settingValue }
|
||||
}
|
||||
|
||||
val ModuleConfigurator.settings
|
||||
@@ -285,7 +329,7 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
||||
path,
|
||||
map,
|
||||
configurator.settings.map { setting ->
|
||||
val reference = withSettingsOf(moduleIdentificator, configurator) { setting.reference }
|
||||
val reference = inContextOfModuleConfigurator(moduleIdentificator, configurator) { setting.reference }
|
||||
reference to setting
|
||||
}
|
||||
)
|
||||
|
||||
+1
-2
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
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.entity.settings.SettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
||||
@@ -56,7 +55,7 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
withSettingsOf(module) {
|
||||
inContextOfModuleConfigurator(module) {
|
||||
reader {
|
||||
testFramework.reference.settingValue.dependencyNames.map { dependencyName ->
|
||||
KotlinArbitraryDependencyIR(
|
||||
|
||||
+1
-1
@@ -146,7 +146,7 @@ object JvmTargetConfigurator : JvmModuleConfigurator,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = irsList {
|
||||
reader {
|
||||
withSettingsOf(module) {
|
||||
inContextOfModuleConfigurator(module) {
|
||||
val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
||||
if (buildSystemType.isGradle) {
|
||||
"compilations.all" {
|
||||
|
||||
+1
-6
@@ -1,7 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
|
||||
import kotlinx.collections.immutable.toPersistentList
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||
@@ -11,14 +10,10 @@ import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetAccessIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.MavenPropertyIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
@@ -115,7 +110,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
||||
buildList {
|
||||
+GradleImportIR("org.jetbrains.kotlin.gradle.tasks.KotlinCompile")
|
||||
|
||||
val targetVersionValue = withSettingsOf(module) {
|
||||
val targetVersionValue = inContextOfModuleConfigurator(module) {
|
||||
reader {
|
||||
JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.PluginSettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.BuildSystemAvailabilityWizardService
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
|
||||
+1
@@ -4,6 +4,7 @@ import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates
|
||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.PluginSettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.Property
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ class TemplateSettingsBuilder<Q : Template>(
|
||||
class ConfiguratorSettingsBuilder<C : ModuleConfigurator>(
|
||||
val module: Module,
|
||||
val configurator: C
|
||||
) : ModuleConfiguratorSettingsEnvironment by ModuleBasedConfiguratorSettingsEnvironment(configurator, module) {
|
||||
) : ModuleConfiguratorContext by ModuleBasedConfiguratorContext(configurator, module) {
|
||||
init {
|
||||
assert(module.configurator === configurator)
|
||||
}
|
||||
|
||||
+2
-1
@@ -76,6 +76,7 @@ class Module(
|
||||
|
||||
fun SettingsWriter.initDefaultValuesForSettings() {
|
||||
configurator.safeAs<ModuleConfiguratorWithSettings>()?.apply { initDefaultValuesFor(this@Module) }
|
||||
configurator.safeAs<ModuleConfiguratorWithProperties>()?.apply { initDefaultValuesForProperties(this@Module) }
|
||||
template?.apply { initDefaultValuesFor(this@Module) }
|
||||
}
|
||||
|
||||
@@ -114,7 +115,7 @@ class Module(
|
||||
}
|
||||
|
||||
val moduleConfiguratorValidator = settingValidator<Module> { module ->
|
||||
withSettingsOf(module) {
|
||||
inContextOfModuleConfigurator(module) {
|
||||
allSettingsOfModuleConfigurator(module.configurator).map { setting ->
|
||||
val reference = when (setting) {
|
||||
is PluginSetting<Any, SettingType<Any>> -> setting.reference
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ sealed class ModuleDependencyType(
|
||||
to: Module,
|
||||
toModulePath: Path,
|
||||
data: ModulesToIrConversionData
|
||||
): TaskResult<Unit> = withSettingsOf(from) {
|
||||
): TaskResult<Unit> = inContextOfModuleConfigurator(from) {
|
||||
IOSSinglePlatformModuleConfigurator.dependentModule.reference
|
||||
.setValue(IOSSinglePlatformModuleConfigurator.DependentModuleReference(to))
|
||||
val dummyFilePath = Defaults.SRC_DIR / "${to.iosTargetSafe()!!.name}Main" / to.configurator.kotlinDirectoryName / "dummyFile.kt"
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ class SimpleJsClientTemplate : Template() {
|
||||
JsBrowserTargetConfigurator -> true
|
||||
BrowserJsSinglePlatformModuleConfigurator -> {
|
||||
with(reader) {
|
||||
withSettingsOf(module, module.configurator) {
|
||||
inContextOfModuleConfigurator(module, module.configurator) {
|
||||
JSConfigurator.kind.reference.notRequiredSettingValue == JsTargetKind.APPLICATION
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user