From 3bf5d96e041a8ca4cc1556d1711208746729b6f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn-Michael=20Miehe?= <40151420+ldericher@users.noreply.github.com> Date: Thu, 5 Jun 2025 12:58:09 +0000 Subject: [PATCH] earlier check for stop signal --- src/main.rs | 50 +++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/main.rs b/src/main.rs index b27d6f6..d8b379b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,7 +25,7 @@ fn main() { let stop_ctrlc = stop.clone(); ctrlc::set_handler(move || { stop_ctrlc.store(true, Ordering::SeqCst); - info!("stopping after chunk ..."); + info!("stopping as soon as possible ..."); }) .expect("Error setting Ctrl-C handler"); @@ -48,29 +48,33 @@ fn main() { .interact() .map_or(None, |b| b.then_some(state)) }) - .unwrap_or_else(|| match AppState::from_args(&args, &agent) { - Ok(state) => { - state.save().unwrap(); - state - } - Err(e) => { - if let Some(cause) = match e { - ureq::Error::StatusCode(403) => Some("Alias ID"), - ureq::Error::Io(_) => Some("URL"), - _ => None, - } { - println!( - "{} probably wrong: {} – {:?}", - style("Error!").red(), - style(cause).cyan(), - style(e.to_string()).yellow() - ); - } else { - error!("unknown error: {e}"); - println!("{}", style("Unknown Error!").red()); - } + .unwrap_or_else(|| { + stop.load(Ordering::SeqCst).then(|| exit(0)); - exit(1); + match AppState::from_args(&args, &agent) { + Ok(state) => { + state.save().unwrap(); + state + } + Err(e) => { + if let Some(cause) = match e { + ureq::Error::StatusCode(403) => Some("Alias ID"), + ureq::Error::Io(_) => Some("URL"), + _ => None, + } { + println!( + "{} probably wrong: {} – {:?}", + style("Error!").red(), + style(cause).cyan(), + style(e.to_string()).yellow() + ); + } else { + error!("unknown error: {e}"); + println!("{}", style("Unknown Error!").red()); + } + + exit(1); + } } });