summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2024-04-06 23:59:59 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2024-04-06 23:59:59 +0200
commit8d9ece5b3d65c8b8e1b98ca5e02b9896a2363677 (patch)
tree630f3c6f2d85b2b79d953adccdb9edc5dcddd78d
parenta466c57611ac645cfe5f3af2ff2f20be2f30f395 (diff)
downloadrebel-8d9ece5b3d65c8b8e1b98ca5e02b9896a2363677.tar
rebel-8d9ece5b3d65c8b8e1b98ca5e02b9896a2363677.zip
driver: add --keep-going flag
-rw-r--r--crates/driver/src/driver.rs4
-rw-r--r--crates/driver/src/main.rs5
2 files changed, 6 insertions, 3 deletions
diff --git a/crates/driver/src/driver.rs b/crates/driver/src/driver.rs
index c401f27..cc4bfbf 100644
--- a/crates/driver/src/driver.rs
+++ b/crates/driver/src/driver.rs
@@ -402,7 +402,7 @@ impl<'ctx> Driver<'ctx> {
&& self.tasks_running.is_empty()
}
- pub fn run(&mut self, runner: &Runner) -> Result<bool> {
+ pub fn run(&mut self, runner: &Runner, keep_going: bool) -> Result<bool> {
let mut success = true;
self.run_tasks(runner)?;
@@ -411,7 +411,7 @@ impl<'ctx> Driver<'ctx> {
if !self.wait_for_task()? {
success = false;
}
- if success {
+ if success || keep_going {
self.run_tasks(runner)?;
}
}
diff --git a/crates/driver/src/main.rs b/crates/driver/src/main.rs
index 44e5e1d..bd08f18 100644
--- a/crates/driver/src/main.rs
+++ b/crates/driver/src/main.rs
@@ -22,6 +22,9 @@ struct Opts {
/// Defaults to the number of available CPUs
#[clap(short, long)]
jobs: Option<usize>,
+ /// Keep going after some tasks have failed
+ #[clap(short, long)]
+ keep_going: bool,
/// The tasks to run
#[clap(name = "task", required = true)]
tasks: Vec<String>,
@@ -62,7 +65,7 @@ fn main() {
}
let taskset = rsv.into_taskset();
let mut driver = driver::Driver::new(&ctx, taskset, force_run).unwrap();
- match driver.run(&runner) {
+ match driver.run(&runner, opts.keep_going) {
Ok(success) => {
if !success {
std::process::exit(1);