summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-06-29 09:19:50 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2021-09-16 12:32:21 +0200
commit2224aa1061d01f4af1bf239a3e3739aa3d9493f1 (patch)
tree7363657687d714ccd7a00ab53aca19c7f8bbbf25
parentc6917d3e1adac99ecce05b3c7fe6592b551dc410 (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>
-rw-r--r--src/package/dag.rs32
-rw-r--r--src/package/package.rs25
2 files changed, 29 insertions, 28 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()
diff --git a/src/package/package.rs b/src/package/package.rs
index 883ac1f..64c5bd0 100644
--- a/src/package/package.rs
+++ b/src/package/package.rs
@@ -11,9 +11,7 @@
use std::collections::HashMap;
use std::path::PathBuf;
-use anyhow::Result;
use getset::Getters;
-use itertools::Itertools;
use serde::Deserialize;
use serde::Serialize;
@@ -21,7 +19,6 @@ use crate::package::dependency::*;
use crate::package::name::*;
use crate::package::source::*;
use crate::package::version::*;
-use crate::package::ParseDependency;
use crate::package::{Phase, PhaseName};
use crate::util::docker::ImageName;
use crate::util::EnvironmentVariableName;
@@ -107,28 +104,6 @@ impl Package {
self.dependencies = dependencies;
}
- pub fn get_self_packaged_dependencies(
- &self,
- ) -> impl Iterator<Item = Result<(PackageName, PackageVersionConstraint)>> + '_ {
- let build_iter = self
- .dependencies()
- .build()
- .iter()
- .cloned()
- .map(|d| d.parse_as_name_and_version());
-
- let runtime_iter = self
- .dependencies()
- .runtime()
- .iter()
- .cloned()
- .map(|d| d.parse_as_name_and_version());
-
- build_iter
- .chain(runtime_iter)
- .unique_by(|res| res.as_ref().ok().cloned())
- }
-
/// Get a wrapper object around self which implements a debug interface with all details about
/// the Package object
#[cfg(debug_assertions)]