summaryrefslogtreecommitdiffstats
path: root/src/executor.rs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-09-19 10:09:15 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-09-19 10:09:15 +0200
commit9c860e5cf1787cc869b55f4e11220c7286b68dfe (patch)
treeeff305790fbee998377ba29edbf17328e7027843 /src/executor.rs
parent7d47402638d1abf9dfb47b242f2af832ca92a863 (diff)
downloadrebel-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.rs25
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,