From 1b70a92162923d269c8e43e1ee9f0e1ca064fccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Saparelli?= Date: Tue, 28 Jun 2022 13:50:56 +0000 Subject: [PATCH] Fix restart (actually issue a stop outcome) (#353) Fixes #346 --- crates/cli/src/config/runtime.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/crates/cli/src/config/runtime.rs b/crates/cli/src/config/runtime.rs index 4ca8861..5079053 100644 --- a/crates/cli/src/config/runtime.rs +++ b/crates/cli/src/config/runtime.rs @@ -66,11 +66,10 @@ pub fn runtime(args: &ArgMatches) -> Result { .value_of("signal") .map(SubSignal::from_str) .transpose() - .into_diagnostic()? - .unwrap_or(SubSignal::Terminate); + .into_diagnostic()?; if args.is_present("kill") { - signal = SubSignal::ForceStop; + signal = Some(SubSignal::ForceStop); } let print_events = args.is_present("print-events"); @@ -187,8 +186,18 @@ pub fn runtime(args: &ArgMatches) -> Result { let when_idle = start.clone(); let when_running = match on_busy.as_str() { "do-nothing" => Outcome::DoNothing, - "restart" => start, - "signal" => Outcome::Signal(signal), + "restart" => Outcome::both( + if let Some(sig) = signal { + Outcome::both( + Outcome::Signal(sig), + Outcome::both(Outcome::Sleep(Duration::from_secs(60)), Outcome::Stop), + ) + } else { + Outcome::Stop + }, + start, + ), + "signal" => Outcome::Signal(signal.unwrap_or(SubSignal::Terminate)), "queue" => Outcome::wait(start), _ => Outcome::DoNothing, };