summaryrefslogtreecommitdiffstats
path: root/src/executor.rs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-07-24 13:43:00 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-07-24 13:43:00 +0200
commit9ba27c046e57a3fa55643123147318db117b5dba (patch)
treea5e0c8bd17f9b15a48f1442f19aa4bffd661fdb0 /src/executor.rs
parent161425d4ad6673b126744d2554484bc74fcf88ea (diff)
downloadrebel-9ba27c046e57a3fa55643123147318db117b5dba.tar
rebel-9ba27c046e57a3fa55643123147318db117b5dba.zip
Revert introduction of Dependency enum
We will represent all kinds of dependencies as tasks instead.
Diffstat (limited to 'src/executor.rs')
-rw-r--r--src/executor.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/executor.rs b/src/executor.rs
index 7c5bbee..fc12725 100644
--- a/src/executor.rs
+++ b/src/executor.rs
@@ -33,7 +33,7 @@ pub struct Executor<'a> {
tasks: &'a TaskMap,
tasks_blocked: HashSet<TaskRef>,
tasks_runnable: Vec<TaskRef>,
- tasks_done: HashMap<Dependency, TaskOutput>,
+ tasks_done: HashMap<TaskRef, TaskOutput>,
rdeps: HashMap<TaskRef, Vec<TaskRef>>,
env: HashMap<String, String>,
}
@@ -60,8 +60,7 @@ impl<'a> Executor<'a> {
exc.tasks_runnable.push(task);
} else {
for dep in &task_def.depends {
- let Dependency::Task(dep_task) = dep;
- let rdep = exc.rdeps.entry(dep_task.clone()).or_default();
+ let rdep = exc.rdeps.entry(dep.clone()).or_default();
rdep.push(task.clone());
}
@@ -86,7 +85,7 @@ impl<'a> Executor<'a> {
.all(|dep| self.tasks_done.contains_key(dep))
}
- fn task_deps(&self, task: &TaskDef) -> HashMap<OutputHash, Dependency> {
+ fn task_deps(&self, task: &TaskDef) -> HashMap<OutputHash, TaskRef> {
task.depends
.iter()
.map(|dep| {
@@ -102,12 +101,12 @@ impl<'a> Executor<'a> {
}
fn run_one(&mut self, runner: &impl runner::Runner) -> runner::Result<()> {
- let task_id = self.tasks_runnable.pop().expect("No runnable tasks left");
- let task_def = self.tasks.get(&task_id).expect("Invalid TaskRef");
+ let task_ref = self.tasks_runnable.pop().expect("No runnable tasks left");
+ let task_def = self.tasks.get(&task_ref).expect("Invalid TaskRef");
let task_deps = self.task_deps(&task_def);
let task = Task {
- id: task_id,
+ id: task_ref.clone(),
def: task_def.clone(),
depends: task_deps,
env: self.env.clone(),
@@ -127,7 +126,7 @@ impl<'a> Executor<'a> {
save_output(&output)?;
let rdeps = self.rdeps.get(&task.id);
- self.tasks_done.insert(Dependency::Task(task.id), output);
+ self.tasks_done.insert(task_ref, output);
for rdep in rdeps.unwrap_or(&Vec::new()) {
if !self.tasks_blocked.contains(rdep) {