Wizard: use property for storing module dependency

This commit is contained in:
Ilya Kirillov
2020-07-22 18:20:06 +03:00
committed by Kirill Shmakov
parent dbc43b66bf
commit 7d1036ee7e
2 changed files with 16 additions and 14 deletions
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
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.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.core.entity.properties.ModuleConfiguratorProperty
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle.GradlePlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
@@ -16,7 +16,11 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplate
import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor
import java.nio.file.Path
object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, ModuleConfiguratorSettings() {
object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator,
ModuleConfiguratorSettings(),
ModuleConfiguratorProperties,
ModuleConfiguratorWithProperties {
@NonNls
override val id = "IOS Module"
@@ -71,7 +75,7 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M
private fun Reader.createTemplatesSettingValues(module: Module): Map<String, Any?> {
val dependentModule = inContextOfModuleConfigurator(module) {
dependentModule.reference.notRequiredSettingValue?.module
dependentModule.reference.propertyValue.module
}
return mapOf(
@@ -93,13 +97,10 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M
@NonNls
private const val DEFAULT_APP_NAME = "appName"
val dependentModule by valueSetting<DependentModuleReference>(
"",
GenerationPhase.PROJECT_GENERATION,
alwaysFailingParser("Dependent module setting should not be parsed")
) {
defaultValue = value(DependentModuleReference.EMPTY)
}
val dependentModule by property(DependentModuleReference.EMPTY)
override fun getConfiguratorProperties(): List<ModuleConfiguratorProperty<*>> =
listOf(dependentModule)
data class DependentModuleReference(val module: Module?) {
companion object {
@@ -50,7 +50,7 @@ sealed class ModuleDependencyType(
}.asSingletonList()
}
open fun SettingsWriter.runArbitraryTask(
open fun Writer.runArbitraryTask(
from: Module,
to: Module,
toModulePath: Path,
@@ -78,14 +78,15 @@ sealed class ModuleDependencyType(
override fun createDependencyIrs(from: Module, to: Module, data: ModulesToIrConversionData): List<BuildSystemIR> =
emptyList()
override fun SettingsWriter.runArbitraryTask(
override fun Writer.runArbitraryTask(
from: Module,
to: Module,
toModulePath: Path,
data: ModulesToIrConversionData
): TaskResult<Unit> = inContextOfModuleConfigurator(from) {
IOSSinglePlatformModuleConfigurator.dependentModule.reference
.setValue(IOSSinglePlatformModuleConfigurator.DependentModuleReference(to))
IOSSinglePlatformModuleConfigurator.dependentModule.reference.update {
IOSSinglePlatformModuleConfigurator.DependentModuleReference(to).asSuccess()
}
val dummyFilePath = Defaults.SRC_DIR / "${to.iosTargetSafe()!!.name}Main" / to.configurator.kotlinDirectoryName / "dummyFile.kt"
TemplatesPlugin.addFileTemplate.execute(
FileTemplate(