summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-05-27 23:58:32 +0200
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-05-27 23:58:32 +0200
commitd39def4552f890307ad4c246ad8c260e232317be (patch)
tree05b1883d06aea10be15badf5e98973360f97483a /src/main.rs
parent0041704d72e78754bceffab235f059633acf31c5 (diff)
downloadtexmodbot-d39def4552f890307ad4c246ad8c260e232317be.tar.xz
Add quit_after_nodes
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs30
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}");
}