summaryrefslogtreecommitdiffstats
path: root/src/package/tree.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-10-12 17:53:09 +0200
committerMatthias Beyer <mail@beyermatthias.de>2020-10-12 17:53:12 +0200
commit4150e6184dd5279420685c7f375d80b65f0fcc24 (patch)
tree7a9c7b5269ea5afccae89ccd476e661d09afb9a1 /src/package/tree.rs
parent6831575f3d682ea09d8fac97b32576d257138dee (diff)
Add Executor for executing things on the system
This adds an Executor trait, which can be used to execute things on the system for finding, for example, dependency specifications. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/package/tree.rs')
-rw-r--r--src/package/tree.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/package/tree.rs b/src/package/tree.rs
index f826533..0e963e5 100644
--- a/src/package/tree.rs
+++ b/src/package/tree.rs
@@ -5,6 +5,7 @@ use anyhow::anyhow;
use crate::package::Package;
use crate::package::Loader;
+use crate::util::executor::Executor;
pub struct Tree {
root: BTreeMap<Package, Tree>,
@@ -16,11 +17,11 @@ impl Tree {
Tree { root: BTreeMap::new() }
}
- pub fn add_package(&mut self, p: Package, loader: &Loader) -> Result<()> {
+ pub fn add_package(&mut self, p: Package, loader: &Loader, executor: &dyn Executor) -> Result<()> {
macro_rules! mk_add_package_tree {
- ($this:ident, $pack:ident, $loader:ident, $root:ident) => {{
+ ($this:ident, $pack:ident, $loader:ident, $root:ident, $executor:ident) => {{
let mut subtree = Tree::new();
- ($pack).get_all_dependencies()?
+ ($pack).get_all_dependencies($executor)?
.into_iter()
.map(|(name, constr)| {
let pack = ($loader)
@@ -34,7 +35,7 @@ impl Tree {
return Err(anyhow!("Duplicate version of package {:?} found", ($pack)))
}
- add_package_tree(&mut subtree, pack, ($loader), ($root))
+ add_package_tree(&mut subtree, pack, ($loader), ($root), ($executor))
})
.collect::<Result<Vec<()>>>()?;
@@ -43,11 +44,11 @@ impl Tree {
}}
};
- fn add_package_tree(this: &mut Tree, p: Package, loader: &Loader, root: &mut Tree) -> Result<()> {
- mk_add_package_tree!(this, p, loader, root)
+ fn add_package_tree(this: &mut Tree, p: Package, loader: &Loader, root: &mut Tree, executor: &dyn Executor) -> Result<()> {
+ mk_add_package_tree!(this, p, loader, root, executor)
}
- mk_add_package_tree!(self, p, loader, self)
+ mk_add_package_tree!(self, p, loader, self, executor)
}
pub fn has_package(&self, p: &Package) -> bool {