From d39def4552f890307ad4c246ad8c260e232317be Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Sat, 27 May 2023 23:58:32 +0200 Subject: Add quit_after_nodes --- src/main.rs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index da84133..b90ffc0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,9 +12,13 @@ struct Args { #[clap(value_parser)] address: String, - /// Quit QUIT_AFTER seconds after authentication + /// Quit after QUIT_AFTER seconds #[clap(short, long, value_parser)] - quit_after: Option, + quit_after_seconds: Option, + + /// Quit after having received node definitions + #[clap(short = 'Q', long, value_parser, default_value_t = false)] + quit_after_nodes: bool, /// Player name #[clap(short, long, value_parser, default_value = "texmodbot")] @@ -29,7 +33,8 @@ struct Args { async fn main() { let Args { address, - quit_after, + quit_after_seconds, + quit_after_nodes, username, password, } = Args::parse(); @@ -39,7 +44,13 @@ async fn main() { let mut auth = mt_auth::Auth::new(tx.clone(), username, password, "en_US"); let worker = tokio::spawn(worker.run()); - let mut quit_sleep: Option>> = None; + let mut quit_sleep: Option>> = quit_after_seconds.and_then(|x| { + if x >= 0.0 { + Some(Box::pin(sleep(Duration::from_secs_f32(x)))) + } else { + None + } + }); loop { tokio::select! { @@ -68,14 +79,11 @@ async fn main() { } }); - quit_sleep = quit_after.and_then(|x| { - if x >= 0.0 { - Some(Box::pin(sleep(Duration::from_secs_f32(x)))) - } else { - None - } - }); + if quit_after_nodes { + tx.close(); + } } + Kick(reason) => { eprintln!("kicked: {reason}"); } -- cgit v1.2.3