diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-10-12 17:53:09 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-10-12 17:53:12 +0200 |
commit | 4150e6184dd5279420685c7f375d80b65f0fcc24 (patch) | |
tree | 7a9c7b5269ea5afccae89ccd476e661d09afb9a1 /src/package/tree.rs | |
parent | 6831575f3d682ea09d8fac97b32576d257138dee (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.rs | 15 |
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 { |