diff options
Diffstat (limited to 'src/job/set.rs')
-rw-r--r-- | src/job/set.rs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/job/set.rs b/src/job/set.rs index e6902df..c94fb09 100644 --- a/src/job/set.rs +++ b/src/job/set.rs @@ -7,6 +7,7 @@ use crate::filestore::MergedStores; use crate::job::Job; use crate::job::JobResource; use crate::job::RunnableJob; +use crate::package::Shebang; use crate::package::Tree; use crate::phase::PhaseName; use crate::source::SourceCache; @@ -19,8 +20,8 @@ pub struct JobSet { } impl JobSet { - pub fn sets_from_tree(t: Tree, image: ImageName, phases: Vec<PhaseName>, resources: Vec<JobResource>) -> Result<Vec<JobSet>> { - tree_into_jobsets(t, image, phases, resources) + pub fn sets_from_tree(t: Tree, shebang: Shebang, image: ImageName, phases: Vec<PhaseName>, resources: Vec<JobResource>) -> Result<Vec<JobSet>> { + tree_into_jobsets(t, shebang, image, phases, resources) } fn is_empty(&self) -> bool { @@ -39,8 +40,8 @@ impl JobSet { } /// Get the tree as sets of jobs, the deepest level of the tree first -fn tree_into_jobsets(tree: Tree, image: ImageName, phases: Vec<PhaseName>, resources: Vec<JobResource>) -> Result<Vec<JobSet>> { - fn inner(tree: Tree, image: &ImageName, phases: &Vec<PhaseName>, resources: &Vec<JobResource>) -> Result<Vec<JobSet>> { +fn tree_into_jobsets(tree: Tree, shebang: Shebang, image: ImageName, phases: Vec<PhaseName>, resources: Vec<JobResource>) -> Result<Vec<JobSet>> { + fn inner(tree: Tree, shebang: &Shebang, image: &ImageName, phases: &Vec<PhaseName>, resources: &Vec<JobResource>) -> Result<Vec<JobSet>> { trace!("Creating jobsets for tree: {:?}", tree); let mut sets = vec![]; @@ -48,7 +49,7 @@ fn tree_into_jobsets(tree: Tree, image: ImageName, phases: Vec<PhaseName>, resou for (package, dep) in tree.into_iter() { trace!("Recursing for package: {:?}", package); - let mut sub_sets = inner(dep, image, phases, resources)?; // recursion! + let mut sub_sets = inner(dep, shebang, image, phases, resources)?; // recursion! sets.append(&mut sub_sets); current_set.push(package); } @@ -58,7 +59,7 @@ fn tree_into_jobsets(tree: Tree, image: ImageName, phases: Vec<PhaseName>, resou set: current_set .into_iter() .map(|package| { - Job::new(package, image.clone(), phases.clone(), resources.clone()) + Job::new(package, shebang.clone(), image.clone(), phases.clone(), resources.clone()) }) .collect(), }; @@ -76,7 +77,7 @@ fn tree_into_jobsets(tree: Tree, image: ImageName, phases: Vec<PhaseName>, resou Ok(result) } - inner(tree, &image, &phases, &resources).map(|mut v| { + inner(tree, &shebang, &image, &phases, &resources).map(|mut v| { // reverse, because the highest level in the tree is added as first element in the vector // and the deepest level is last. // @@ -129,8 +130,9 @@ mod tests { let image = ImageName::from(String::from("test")); let phases = vec![PhaseName::from(String::from("testphase"))]; + let shebang = Shebang::from(String::from("#!/bin/bash")); - let js = JobSet::sets_from_tree(tree, image, phases, vec![]); + let js = JobSet::sets_from_tree(tree, shebang, image, phases, vec![]); assert!(js.is_ok()); let js = js.unwrap(); @@ -176,8 +178,9 @@ mod tests { let image = ImageName::from(String::from("test")); let phases = vec![PhaseName::from(String::from("testphase"))]; + let shebang = Shebang::from(String::from("#!/bin/bash")); - let js = JobSet::sets_from_tree(tree, image, phases, vec![]); + let js = JobSet::sets_from_tree(tree, shebang, image, phases, vec![]); assert!(js.is_ok()); let js = js.unwrap(); @@ -228,8 +231,9 @@ mod tests { let image = ImageName::from(String::from("test")); let phases = vec![PhaseName::from(String::from("testphase"))]; + let shebang = Shebang::from(String::from("#!/bin/bash")); - let js = JobSet::sets_from_tree(tree, image, phases, vec![]); + let js = JobSet::sets_from_tree(tree, shebang, image, phases, vec![]); assert!(js.is_ok()); let js = js.unwrap(); |