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
|
package org.jetbrains.kotlin.tools.projectWizard.wizard.service
|
||||||
|
|
||||||
import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix
|
import com.intellij.codeInsight.daemon.impl.quickfix.OrderEntryFix
|
||||||
import com.intellij.ide.impl.NewProjectUtil
|
|
||||||
import com.intellij.ide.util.projectWizard.ModuleBuilder
|
import com.intellij.ide.util.projectWizard.ModuleBuilder
|
||||||
import com.intellij.jarRepository.JarRepositoryManager
|
import com.intellij.jarRepository.JarRepositoryManager
|
||||||
import com.intellij.jarRepository.RemoteRepositoryDescription
|
import com.intellij.jarRepository.RemoteRepositoryDescription
|
||||||
import com.intellij.openapi.Disposable
|
|
||||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
||||||
import com.intellij.openapi.module.ModifiableModuleModel
|
import com.intellij.openapi.module.ModifiableModuleModel
|
||||||
import com.intellij.openapi.module.ModuleTypeId
|
import com.intellij.openapi.module.ModuleTypeId
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.roots.*
|
import com.intellij.openapi.roots.*
|
||||||
import com.intellij.openapi.roots.libraries.ui.OrderRoot
|
import com.intellij.openapi.roots.libraries.ui.OrderRoot
|
||||||
import com.intellij.openapi.util.Disposer
|
|
||||||
import com.intellij.openapi.vfs.VfsUtil
|
import com.intellij.openapi.vfs.VfsUtil
|
||||||
import com.intellij.util.PathUtil
|
import com.intellij.util.PathUtil
|
||||||
import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties
|
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.idea.framework.KotlinSdkType
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JvmModuleConfigurator
|
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 org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -116,7 +113,7 @@ private class JpsModuleConfigurationUpdater(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun ModuleIR.jvmTarget() = reader {
|
private fun ModuleIR.jvmTarget() = reader {
|
||||||
withSettingsOf(originalModule) {
|
inContextOfModuleConfigurator(originalModule) {
|
||||||
JvmModuleConfigurator.targetJvmVersion.reference.settingValue
|
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
|
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
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.entity.settings.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.SettingSavingWizardService
|
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 =
|
fun <S : WizardService> serviceByClass(klass: KClass<S>, filter: (S) -> Boolean = { true }): S =
|
||||||
servicesManager.serviceByClass(klass, filter) ?: error("Service ${klass.simpleName} was not found")
|
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
|
val <T : Any> PluginProperty<T>.propertyValue: T
|
||||||
get() = propertyContext[this] ?: error("No value is present for property `$this`")
|
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
|
val <V : Any, T : SettingType<V>> SettingReference<V, T>.settingValue: V
|
||||||
get() = settingContext[this] ?: error("No value is present for setting `$this`")
|
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(
|
fun <T : Any> PluginProperty<T>.update(
|
||||||
updater: suspend ComputeContext<*>.(T) -> TaskResult<T>
|
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 {
|
): TaskResult<Unit> = compute {
|
||||||
val (newValue) = updater(propertyValue)
|
val (newValue) = updater(propertyValue)
|
||||||
propertyContext[this@update] = newValue
|
propertyContext[this@update] = newValue
|
||||||
@@ -182,6 +197,10 @@ class Context private constructor(
|
|||||||
|
|
||||||
fun <T : Any> PluginProperty<List<T>>.addValues(
|
fun <T : Any> PluginProperty<List<T>>.addValues(
|
||||||
values: List<T>
|
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) }
|
): TaskResult<Unit> = update { oldValues -> success(oldValues + values) }
|
||||||
|
|
||||||
@JvmName("write")
|
@JvmName("write")
|
||||||
@@ -193,6 +212,10 @@ class Context private constructor(
|
|||||||
settingContext[this] = newValue
|
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() {
|
fun <V : Any, T : SettingType<V>> SettingReference<V, T>.setSettingValueToItsDefaultIfItIsNotSetValue() {
|
||||||
val defaultValue = savedOrDefaultValue ?: return
|
val defaultValue = savedOrDefaultValue ?: return
|
||||||
if (notRequiredSettingValue == null) {
|
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.PropertiesOwner
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
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.core.entity.settings.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
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
|
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||||
|
|
||||||
abstract class ValuedEntityContext<E : Entity> {
|
abstract class ValuedEntityContext<E : Entity> {
|
||||||
private val values = mutableMapOf<String, Any>()
|
protected val values = mutableMapOf<String, Any>()
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
operator fun <V : Any> get(entity: E) =
|
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
|
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.Identificator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
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.moduleConfigurators.ModuleConfigurator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||||
import kotlin.reflect.KClass
|
import kotlin.reflect.KClass
|
||||||
|
|
||||||
|
|
||||||
sealed class SettingReference<out V : Any, out T : SettingType<V>> {
|
sealed class SettingReference<out V : Any, out T : SettingType<V>>: EntityReference() {
|
||||||
@get:NonNls
|
|
||||||
abstract val path: String
|
|
||||||
abstract val type: KClass<out T>
|
abstract val type: KClass<out T>
|
||||||
|
|
||||||
abstract fun Reader.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
|
|
||||||
final override fun hashCode() = path.hashCode()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data class PluginSettingReference<out V : Any, out T : SettingType<V>>(
|
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 val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
|
||||||
|
|
||||||
override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin =
|
override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin =
|
||||||
withSettingsOf(module) { androidPlugin.reference.settingValue }
|
inContextOfModuleConfigurator(module) { androidPlugin.reference.settingValue }
|
||||||
|
|
||||||
override fun getConfiguratorSettings() = buildList<ModuleConfiguratorSetting<*, *>> {
|
override fun getConfiguratorSettings() = buildList<ModuleConfiguratorSetting<*, *>> {
|
||||||
+super.getConfiguratorSettings()
|
+super.getConfiguratorSettings()
|
||||||
|
|||||||
+1
-1
@@ -70,7 +70,7 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun Reader.createTemplatesSettingValues(module: Module): Map<String, Any?> {
|
private fun Reader.createTemplatesSettingValues(module: Module): Map<String, Any?> {
|
||||||
val dependentModule = withSettingsOf(module) {
|
val dependentModule = inContextOfModuleConfigurator(module) {
|
||||||
dependentModule.reference.notRequiredSettingValue?.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.Identificator
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.PropertiesOwner
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
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.core.entity.settings.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
@@ -21,41 +23,49 @@ import java.nio.file.Path
|
|||||||
import kotlin.properties.ReadOnlyProperty
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
|
||||||
|
|
||||||
interface ModuleConfiguratorSettingsEnvironment {
|
interface ModuleConfiguratorContext {
|
||||||
val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
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 configurator: ModuleConfigurator,
|
||||||
private val module: Module
|
private val module: Module
|
||||||
) : ModuleConfiguratorSettingsEnvironment {
|
) : ModuleConfiguratorContext {
|
||||||
override val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
override val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
||||||
get() = ModuleBasedConfiguratorSettingReference(configurator, module, this)
|
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 configurator: ModuleConfigurator,
|
||||||
private val moduleId: Identificator
|
private val moduleId: Identificator
|
||||||
) : ModuleConfiguratorSettingsEnvironment {
|
) : ModuleConfiguratorContext {
|
||||||
override val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
override val <V : Any, T : SettingType<V>> ModuleConfiguratorSetting<V, T>.reference: ModuleConfiguratorSettingReference<V, T>
|
||||||
get() = IdBasedConfiguratorSettingReference(configurator, moduleId, this)
|
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,
|
moduleId: Identificator,
|
||||||
configurator: ModuleConfigurator,
|
configurator: ModuleConfigurator,
|
||||||
function: ModuleConfiguratorSettingsEnvironment.() -> T
|
function: ModuleConfiguratorContext.() -> T
|
||||||
): T = function(IdBasedConfiguratorSettingsEnvironment(configurator, moduleId))
|
): T = function(IdBasedConfiguratorContext(configurator, moduleId))
|
||||||
|
|
||||||
fun <T> withSettingsOf(
|
fun <T> inContextOfModuleConfigurator(
|
||||||
module: Module,
|
module: Module,
|
||||||
configurator: ModuleConfigurator = module.configurator,
|
configurator: ModuleConfigurator = module.configurator,
|
||||||
function: ModuleConfiguratorSettingsEnvironment.() -> T
|
function: ModuleConfiguratorContext.() -> T
|
||||||
): T = function(ModuleBasedConfiguratorSettingsEnvironment(configurator, module))
|
): T = function(ModuleBasedConfiguratorContext(configurator, module))
|
||||||
|
|
||||||
|
|
||||||
fun <V : Any, T : SettingType<V>> Reader.settingValue(module: Module, setting: ModuleConfiguratorSetting<V, T>): V? =
|
fun <V : Any, T : SettingType<V>> Reader.settingValue(module: Module, setting: ModuleConfiguratorSetting<V, T>): V? =
|
||||||
withSettingsOf(module) {
|
inContextOfModuleConfigurator(module) {
|
||||||
setting.reference.notRequiredSettingValue
|
setting.reference.notRequiredSettingValue
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,13 +176,47 @@ abstract class ModuleConfiguratorSettings : SettingsOwner {
|
|||||||
enumSettingImpl(title, neededAtPhase, init) as ReadOnlyProperty<Any, ModuleConfiguratorSetting<E, DropDownSettingType<E>>>
|
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 {
|
interface ModuleConfiguratorWithSettings : ModuleConfigurator {
|
||||||
fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> = emptyList()
|
fun getConfiguratorSettings(): List<ModuleConfiguratorSetting<*, *>> = emptyList()
|
||||||
fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> = emptyList()
|
fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> = emptyList()
|
||||||
|
|
||||||
|
|
||||||
fun SettingsWriter.initDefaultValuesFor(module: Module) {
|
fun SettingsWriter.initDefaultValuesFor(module: Module) {
|
||||||
withSettingsOf(module) {
|
inContextOfModuleConfigurator(module) {
|
||||||
getConfiguratorSettings().forEach { setting ->
|
getConfiguratorSettings().forEach { setting ->
|
||||||
setting.reference.setSettingValueToItsDefaultIfItIsNotSetValue()
|
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 =
|
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
|
val ModuleConfigurator.settings
|
||||||
@@ -285,7 +329,7 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
|||||||
path,
|
path,
|
||||||
map,
|
map,
|
||||||
configurator.settings.map { setting ->
|
configurator.settings.map { setting ->
|
||||||
val reference = withSettingsOf(moduleIdentificator, configurator) { setting.reference }
|
val reference = inContextOfModuleConfigurator(moduleIdentificator, configurator) { setting.reference }
|
||||||
reference to setting
|
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.Reader
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
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.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.core.safeAs
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
||||||
@@ -56,7 +55,7 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
|||||||
configurationData: ModulesToIrConversionData,
|
configurationData: ModulesToIrConversionData,
|
||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> =
|
): List<BuildSystemIR> =
|
||||||
withSettingsOf(module) {
|
inContextOfModuleConfigurator(module) {
|
||||||
reader {
|
reader {
|
||||||
testFramework.reference.settingValue.dependencyNames.map { dependencyName ->
|
testFramework.reference.settingValue.dependencyNames.map { dependencyName ->
|
||||||
KotlinArbitraryDependencyIR(
|
KotlinArbitraryDependencyIR(
|
||||||
|
|||||||
+1
-1
@@ -146,7 +146,7 @@ object JvmTargetConfigurator : JvmModuleConfigurator,
|
|||||||
module: Module
|
module: Module
|
||||||
): List<BuildSystemIR> = irsList {
|
): List<BuildSystemIR> = irsList {
|
||||||
reader {
|
reader {
|
||||||
withSettingsOf(module) {
|
inContextOfModuleConfigurator(module) {
|
||||||
val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
val targetVersionValue = JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
||||||
if (buildSystemType.isGradle) {
|
if (buildSystemType.isGradle) {
|
||||||
"compilations.all" {
|
"compilations.all" {
|
||||||
|
|||||||
+1
-6
@@ -1,7 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
|
||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
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.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
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.*
|
||||||
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.ir.buildsystem.maven.MavenPropertyIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
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.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.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.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
@@ -115,7 +110,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
|||||||
buildList {
|
buildList {
|
||||||
+GradleImportIR("org.jetbrains.kotlin.gradle.tasks.KotlinCompile")
|
+GradleImportIR("org.jetbrains.kotlin.gradle.tasks.KotlinCompile")
|
||||||
|
|
||||||
val targetVersionValue = withSettingsOf(module) {
|
val targetVersionValue = inContextOfModuleConfigurator(module) {
|
||||||
reader {
|
reader {
|
||||||
JvmModuleConfigurator.targetJvmVersion.reference.settingValue.value
|
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.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidModuleConfigurator
|
||||||
|
|||||||
+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.PluginSettingsOwner
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
|
|||||||
+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.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.StringValidators
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.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.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.ValidationResult
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.BuildSystemAvailabilityWizardService
|
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.Versions
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
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.Versions
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
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.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
||||||
|
|||||||
+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.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.entity.settings.PluginSetting
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
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.Plugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.PluginSettingsOwner
|
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.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.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||||
|
|||||||
+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.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR
|
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.SRC_DIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PipelineTask
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.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.entity.settings.PluginSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService
|
import org.jetbrains.kotlin.tools.projectWizard.core.service.TemplateEngineService
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||||
|
|||||||
+1
-1
@@ -103,7 +103,7 @@ class TemplateSettingsBuilder<Q : Template>(
|
|||||||
class ConfiguratorSettingsBuilder<C : ModuleConfigurator>(
|
class ConfiguratorSettingsBuilder<C : ModuleConfigurator>(
|
||||||
val module: Module,
|
val module: Module,
|
||||||
val configurator: C
|
val configurator: C
|
||||||
) : ModuleConfiguratorSettingsEnvironment by ModuleBasedConfiguratorSettingsEnvironment(configurator, module) {
|
) : ModuleConfiguratorContext by ModuleBasedConfiguratorContext(configurator, module) {
|
||||||
init {
|
init {
|
||||||
assert(module.configurator === configurator)
|
assert(module.configurator === configurator)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -76,6 +76,7 @@ class Module(
|
|||||||
|
|
||||||
fun SettingsWriter.initDefaultValuesForSettings() {
|
fun SettingsWriter.initDefaultValuesForSettings() {
|
||||||
configurator.safeAs<ModuleConfiguratorWithSettings>()?.apply { initDefaultValuesFor(this@Module) }
|
configurator.safeAs<ModuleConfiguratorWithSettings>()?.apply { initDefaultValuesFor(this@Module) }
|
||||||
|
configurator.safeAs<ModuleConfiguratorWithProperties>()?.apply { initDefaultValuesForProperties(this@Module) }
|
||||||
template?.apply { initDefaultValuesFor(this@Module) }
|
template?.apply { initDefaultValuesFor(this@Module) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +115,7 @@ class Module(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val moduleConfiguratorValidator = settingValidator<Module> { module ->
|
val moduleConfiguratorValidator = settingValidator<Module> { module ->
|
||||||
withSettingsOf(module) {
|
inContextOfModuleConfigurator(module) {
|
||||||
allSettingsOfModuleConfigurator(module.configurator).map { setting ->
|
allSettingsOfModuleConfigurator(module.configurator).map { setting ->
|
||||||
val reference = when (setting) {
|
val reference = when (setting) {
|
||||||
is PluginSetting<Any, SettingType<Any>> -> setting.reference
|
is PluginSetting<Any, SettingType<Any>> -> setting.reference
|
||||||
|
|||||||
+1
-1
@@ -83,7 +83,7 @@ sealed class ModuleDependencyType(
|
|||||||
to: Module,
|
to: Module,
|
||||||
toModulePath: Path,
|
toModulePath: Path,
|
||||||
data: ModulesToIrConversionData
|
data: ModulesToIrConversionData
|
||||||
): TaskResult<Unit> = withSettingsOf(from) {
|
): TaskResult<Unit> = inContextOfModuleConfigurator(from) {
|
||||||
IOSSinglePlatformModuleConfigurator.dependentModule.reference
|
IOSSinglePlatformModuleConfigurator.dependentModule.reference
|
||||||
.setValue(IOSSinglePlatformModuleConfigurator.DependentModuleReference(to))
|
.setValue(IOSSinglePlatformModuleConfigurator.DependentModuleReference(to))
|
||||||
val dummyFilePath = Defaults.SRC_DIR / "${to.iosTargetSafe()!!.name}Main" / to.configurator.kotlinDirectoryName / "dummyFile.kt"
|
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
|
JsBrowserTargetConfigurator -> true
|
||||||
BrowserJsSinglePlatformModuleConfigurator -> {
|
BrowserJsSinglePlatformModuleConfigurator -> {
|
||||||
with(reader) {
|
with(reader) {
|
||||||
withSettingsOf(module, module.configurator) {
|
inContextOfModuleConfigurator(module, module.configurator) {
|
||||||
JSConfigurator.kind.reference.notRequiredSettingValue == JsTargetKind.APPLICATION
|
JSConfigurator.kind.reference.notRequiredSettingValue == JsTargetKind.APPLICATION
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user