From bced2655e87ef0d60cdc601d9170b146a7971675 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 14 Jan 2020 18:58:07 +0300 Subject: [PATCH] Wizard: retrieve repositories from artifacts --- .../plugins/buildSystem/BuildSystemPlugin.kt | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt index 8d62d31d362..99faf0ca2ee 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt @@ -6,9 +6,8 @@ import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference import org.jetbrains.kotlin.tools.projectWizard.core.service.BuildSystemAvailabilityWizardService import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService import org.jetbrains.kotlin.tools.projectWizard.core.service.ProjectImportingWizardService -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.MultiplatformModulesStructureIR -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render +import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* +import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin @@ -17,6 +16,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.printBuildFile import org.jetbrains.kotlin.tools.projectWizard.plugins.projectPath import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles abstract class BuildSystemPlugin(context: Context) : Plugin(context) { val type by enumSetting("Build System", GenerationPhase.FIRST_STEP) { @@ -38,6 +38,28 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) { val buildFiles by property>(emptyList()) + val takeRepositoriesFromDependencies by pipelineTask(GenerationPhase.PROJECT_GENERATION) { + runBefore(BuildSystemPlugin::createModules) + runAfter(KotlinPlugin::createModules) + + withAction { + updateBuildFiles { buildFile -> + val dependenciesOfModule = buildList { + buildFile.modules.modules.forEach { module -> + if (module is SingleplatformModuleIR) module.sourcesets.forEach { sourceset -> + +sourceset.irs.filterIsInstance() + } + +module.irs.filterIsInstance() + } + } + val repositoriesToAdd = dependenciesOfModule.mapNotNull { dependency -> + dependency.artifact.safeAs()?.repository?.let(::RepositoryIR) + } + buildFile.withIrs(repositoriesToAdd).asSuccess() + } + } + } + val createModules by pipelineTask(GenerationPhase.PROJECT_GENERATION) { runAfter(StructurePlugin::createProjectDir) withAction {