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.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.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.buildSystem.gradle.GradlePlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* 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 org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor
import java.nio.file.Path import java.nio.file.Path
object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, ModuleConfiguratorSettings() { object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator,
ModuleConfiguratorSettings(),
ModuleConfiguratorProperties,
ModuleConfiguratorWithProperties {
@NonNls @NonNls
override val id = "IOS Module" override val id = "IOS Module"
@@ -71,7 +75,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 = inContextOfModuleConfigurator(module) { val dependentModule = inContextOfModuleConfigurator(module) {
dependentModule.reference.notRequiredSettingValue?.module dependentModule.reference.propertyValue.module
} }
return mapOf( return mapOf(
@@ -93,13 +97,10 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M
@NonNls @NonNls
private const val DEFAULT_APP_NAME = "appName" private const val DEFAULT_APP_NAME = "appName"
val dependentModule by valueSetting<DependentModuleReference>( val dependentModule by property(DependentModuleReference.EMPTY)
"",
GenerationPhase.PROJECT_GENERATION, override fun getConfiguratorProperties(): List<ModuleConfiguratorProperty<*>> =
alwaysFailingParser("Dependent module setting should not be parsed") listOf(dependentModule)
) {
defaultValue = value(DependentModuleReference.EMPTY)
}
data class DependentModuleReference(val module: Module?) { data class DependentModuleReference(val module: Module?) {
companion object { companion object {
@@ -50,7 +50,7 @@ sealed class ModuleDependencyType(
}.asSingletonList() }.asSingletonList()
} }
open fun SettingsWriter.runArbitraryTask( open fun Writer.runArbitraryTask(
from: Module, from: Module,
to: Module, to: Module,
toModulePath: Path, toModulePath: Path,
@@ -78,14 +78,15 @@ sealed class ModuleDependencyType(
override fun createDependencyIrs(from: Module, to: Module, data: ModulesToIrConversionData): List<BuildSystemIR> = override fun createDependencyIrs(from: Module, to: Module, data: ModulesToIrConversionData): List<BuildSystemIR> =
emptyList() emptyList()
override fun SettingsWriter.runArbitraryTask( override fun Writer.runArbitraryTask(
from: Module, from: Module,
to: Module, to: Module,
toModulePath: Path, toModulePath: Path,
data: ModulesToIrConversionData data: ModulesToIrConversionData
): TaskResult<Unit> = inContextOfModuleConfigurator(from) { ): TaskResult<Unit> = inContextOfModuleConfigurator(from) {
IOSSinglePlatformModuleConfigurator.dependentModule.reference IOSSinglePlatformModuleConfigurator.dependentModule.reference.update {
.setValue(IOSSinglePlatformModuleConfigurator.DependentModuleReference(to)) IOSSinglePlatformModuleConfigurator.DependentModuleReference(to).asSuccess()
}
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"
TemplatesPlugin.addFileTemplate.execute( TemplatesPlugin.addFileTemplate.execute(
FileTemplate( FileTemplate(