From ad49713e13b324b5a06f7057b56ab5c90397788f Mon Sep 17 00:00:00 2001 From: Luuk van Oijen Date: Wed, 22 Nov 2023 12:36:45 +0100 Subject: [PATCH] replaced const with cli argument --- Cargo.lock | 32 ++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ src/main.rs | 16 +++++++++++++--- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ebf10e..6a4c913 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -74,6 +74,37 @@ dependencies = [ "num-traits", ] +[[package]] +name = "argh" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219" +dependencies = [ + "argh_derive", + "argh_shared", +] + +[[package]] +name = "argh_derive" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a" +dependencies = [ + "argh_shared", + "proc-macro2", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "argh_shared" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531" +dependencies = [ + "serde", +] + [[package]] name = "async-trait" version = "0.1.74" @@ -128,6 +159,7 @@ name = "beammp_rust_server" version = "0.1.0" dependencies = [ "anyhow", + "argh", "async-trait", "crossterm", "flate2", diff --git a/Cargo.toml b/Cargo.toml index 1049b64..9b3ef06 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,8 @@ edition = "2021" log = "0.4" pretty_env_logger = "0.4.0" +argh = "0.1.12" + lazy_static = "1" anyhow = "1.0.66" diff --git a/src/main.rs b/src/main.rs index 0fcce91..059e1c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,8 @@ #[macro_use] extern crate async_trait; #[macro_use] extern crate lazy_static; +use argh::FromArgs; + use std::sync::Arc; use tokio::sync::mpsc; @@ -11,11 +13,19 @@ mod server; mod config; mod heartbeat; -const USE_TUI_CONSOLE_UI: bool = true; // true = uses tui.rs. false = uses pretty_env_logger (useful when developing) +#[derive(FromArgs)] +/// BeamMP Server v3.3.0 +struct Args { + /// disables the TUI and shows a simple console log instead + #[argh(switch)] + disable_tui: bool, +} #[tokio::main] async fn main() { - if USE_TUI_CONSOLE_UI { + let args: Args = argh::from_env(); + + if !args.disable_tui { logger::init(log::LevelFilter::max()).expect("Failed to enable logger!"); } else { // pretty_env_logger::formatted_timed_builder().filter_level(log::LevelFilter::max()).init(); @@ -53,7 +63,7 @@ async fn main() { let (cmd_tx, cmd_rx) = mpsc::channel(100); - if USE_TUI_CONSOLE_UI { + if !args.disable_tui { tokio::spawn(tui::tui_main(user_config.clone(), cmd_tx)); }