diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-06-29 09:19:50 +0200 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2021-09-16 12:32:21 +0200 |
commit | 2224aa1061d01f4af1bf239a3e3739aa3d9493f1 (patch) | |
tree | 7363657687d714ccd7a00ab53aca19c7f8bbbf25 /src/package/dag.rs | |
parent | c6917d3e1adac99ecce05b3c7fe6592b551dc410 (diff) |
Refactor: Do not use Package::get_self_packaged_dependences() helper fn
We need to refactor because we want, in the next step, add filters in the
dependency-processing mechanism, where we filter out dependencies by their
condition.
Thus, using the Package::get_self_packaged_dependences() helper fn does not work
anymore and we remove it with this patch.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/package/dag.rs')
-rw-r--r-- | src/package/dag.rs | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/package/dag.rs b/src/package/dag.rs index 46c0dc8..bf0c1fb 100644 --- a/src/package/dag.rs +++ b/src/package/dag.rs @@ -17,15 +17,17 @@ use anyhow::Error; use anyhow::Result; use anyhow::anyhow; use daggy::Walker; +use getset::Getters; use indicatif::ProgressBar; +use itertools::Itertools; use log::trace; use ptree::Style; use ptree::TreeItem; use resiter::AndThen; -use getset::Getters; use crate::package::Package; use crate::package::condition::ConditionData; +use crate::package::dependency::ParseDependency; use crate::repository::Repository; #[derive(Debug, Getters)] @@ -51,7 +53,19 @@ impl Dag { p: &'a Package, progress: Option<&ProgressBar> ) -> Result<()> { - p.get_self_packaged_dependencies() + let build_dependencies = p.dependencies() + .build() + .iter() + .map(|d| d.parse_as_name_and_version()); + + let runtime_dependencies = p.dependencies() + .runtime() + .iter() + .map(|d| d.parse_as_name_and_version()); + + build_dependencies + .chain(runtime_dependencies) + .unique_by(|res| res.as_ref().ok().cloned()) .and_then_ok(|(name, constr)| { trace!("Dependency for {} {} found: {:?}", p.name(), p.version(), name); let packs = repo.find_with_version(&name, &constr); @@ -82,7 +96,19 @@ impl Dag { fn add_edges(mappings: &HashMap<&Package, daggy::NodeIndex>, dag: &mut daggy::Dag<&Package, i8>) -> Result<()> { for (package, idx) in mappings { - package.get_self_packaged_dependencies() + let build_dependencies = package.dependencies() + .build() + .iter() + .map(|d| d.parse_as_name_and_version()); + + let runtime_dependencies = package.dependencies() + .runtime() + .iter() + .map(|d| d.parse_as_name_and_version()); + + build_dependencies + .chain(runtime_dependencies) + .unique_by(|res| res.as_ref().ok().cloned()) .and_then_ok(|(name, constr)| { mappings .iter() |