diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-05-27 23:58:32 +0200 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-05-27 23:58:32 +0200 |
commit | d39def4552f890307ad4c246ad8c260e232317be (patch) | |
tree | 05b1883d06aea10be15badf5e98973360f97483a /src/main.rs | |
parent | 0041704d72e78754bceffab235f059633acf31c5 (diff) | |
download | texmodbot-d39def4552f890307ad4c246ad8c260e232317be.tar.xz |
Add quit_after_nodes
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 30 |
1 files changed, 19 insertions, 11 deletions
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<f32>, + quit_after_seconds: Option<f32>, + + /// 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<Pin<Box<Sleep>>> = None; + let mut quit_sleep: Option<Pin<Box<Sleep>>> = 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}"); } |