diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-28 22:14:42 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-10-28 23:28:04 +0200 |
commit | 00f1c87d3d841f5b24c89d370868cf0306896877 (patch) | |
tree | 8b08c9a1c88ce19a3a0170a950514d320f11ac66 | |
parent | 3c8227c34b08eeff6d1b016d08bd29a17d3ad251 (diff) | |
download | rebel-00f1c87d3d841f5b24c89d370868cf0306896877.tar rebel-00f1c87d3d841f5b24c89d370868cf0306896877.zip |
Pass full Output path to runner
Concatenate TASK_DESTDIR with output path in driver instead of runner to
reduce amount of shared logic between driver and runner.
-rw-r--r-- | crates/driver/src/driver.rs | 10 | ||||
-rw-r--r-- | crates/runner/src/task.rs | 8 |
2 files changed, 9 insertions, 9 deletions
diff --git a/crates/driver/src/driver.rs b/crates/driver/src/driver.rs index f43f8e8..683e111 100644 --- a/crates/driver/src/driver.rs +++ b/crates/driver/src/driver.rs @@ -268,10 +268,12 @@ impl<'ctx> Driver<'ctx> { .output .iter() .map(|(name, Output { path, .. })| { - ( - name.clone(), - path.as_ref().map(String::as_str).unwrap_or(".").to_string(), - ) + let output_path = if let Some(path) = path { + paths::join(&[paths::TASK_DESTDIR, path]) + } else { + paths::TASK_DESTDIR.to_string() + }; + (name.clone(), output_path) }) .collect(); diff --git a/crates/runner/src/task.rs b/crates/runner/src/task.rs index dc15ec5..f045d00 100644 --- a/crates/runner/src/task.rs +++ b/crates/runner/src/task.rs @@ -2,7 +2,7 @@ use std::{ collections::HashMap, io::BufWriter, os::unix::prelude::CommandExt, - path::{Path, PathBuf}, + path::Path, process::{self, Command, Stdio}, time::Instant, }; @@ -194,10 +194,8 @@ fn unpack_dependencies(input_hash: &InputHash, task: &Task) -> Result<()> { } fn collect_output(input_hash: &InputHash, path: &str) -> Result<Option<ArchiveHash>> { - let source: PathBuf = [&paths::task_tmp_dir(input_hash), paths::TASK_DESTDIR, path] - .iter() - .collect(); - if !source.is_dir() { + let source = paths::join(&[&paths::task_tmp_dir(input_hash), path]); + if !Path::new(&source).is_dir() { return Ok(None); } |