diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-09-19 10:09:15 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-09-19 10:09:15 +0200 |
commit | 9c860e5cf1787cc869b55f4e11220c7286b68dfe (patch) | |
tree | eff305790fbee998377ba29edbf17328e7027843 /src/executor.rs | |
parent | 7d47402638d1abf9dfb47b242f2af832ca92a863 (diff) | |
download | rebel-9c860e5cf1787cc869b55f4e11220c7286b68dfe.tar rebel-9c860e5cf1787cc869b55f4e11220c7286b68dfe.zip |
Add TaskArgs to reference types
For now the struct is empty, and each task just passes its arguments to
its dependencies.
Diffstat (limited to 'src/executor.rs')
-rw-r--r-- | src/executor.rs | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/executor.rs b/src/executor.rs index adf461e..2440d51 100644 --- a/src/executor.rs +++ b/src/executor.rs @@ -24,7 +24,7 @@ const TASK_ENV: &[(&str, &str)] = &[ #[derive(Clone, Debug, Serialize)] struct TaskInput<'ctx> { - pub id: &'ctx TaskRef<'ctx>, + pub task: &'ctx TaskRef<'ctx>, pub inherit: Option<&'ctx InputHash>, pub depends: &'ctx HashMap<DependencyHash, Dependency>, pub output: &'ctx HashMap<String, String>, @@ -43,6 +43,7 @@ impl<'ctx> TaskInput<'ctx> { #[derive(Clone, Debug, Deserialize, Serialize)] struct TaskMeta { pub id: TaskID, + pub args: TaskArgs, pub inherit: Vec<InputHash>, pub depends: HashMap<DependencyHash, Dependency>, pub input_hash: InputHash, @@ -154,7 +155,7 @@ impl<'ctx> Executor<'ctx> { fn run_one(&self, task_ref: &TaskRef, runner: &impl runner::Runner) -> Result<TaskMeta> { let task_def = &self.ctx[&task_ref.id]; - let task_deps = self.task_deps(&task_ref); + let task_deps = self.task_deps(task_ref); let task_output = task_def .output .iter() @@ -167,17 +168,18 @@ impl<'ctx> Executor<'ctx> { .collect(); let env = self.env.clone(); - let (inherit_chain, inherit_hash) = if let Some(inherit_dep) = &task_def.inherit { - let inherit_meta = &self.tasks_done[&self.ctx.inherit_ref(inherit_dep)]; - let mut inherit_chain = inherit_meta.inherit.clone(); - inherit_chain.push(inherit_meta.input_hash); - (inherit_chain, Some(&inherit_meta.input_hash)) - } else { - (Vec::new(), None) - }; + let (inherit_chain, inherit_hash) = + if let Some(inherit_dep) = self.ctx.get_inherit_depend(task_ref) { + let inherit_meta = &self.tasks_done[&inherit_dep]; + let mut inherit_chain = inherit_meta.inherit.clone(); + inherit_chain.push(inherit_meta.input_hash); + (inherit_chain, Some(&inherit_meta.input_hash)) + } else { + (Vec::new(), None) + }; let input_hash = TaskInput { - id: &task_ref, + task: &task_ref, inherit: inherit_hash, depends: &task_deps, output: &task_output, @@ -212,6 +214,7 @@ impl<'ctx> Executor<'ctx> { let meta = TaskMeta { id: task_ref.id.clone(), + args: task_ref.args.clone(), inherit: inherit_chain, depends: task_deps, input_hash, |