diff --git a/Cargo.toml b/Cargo.toml index 1db76f8..dd2f79b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ tar = "0.4.38" flate2 = "1.0.26" # Used for backup filenames chrono = "0.4.26" -clap = { version = "4.3.1", features = ["derive"] } +clap = { version = "4.3.1", features = ["derive", "env"] } [profile.release] lto = "fat" diff --git a/src/main.rs b/src/main.rs index 72f8cb8..05a6d96 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,30 +17,30 @@ struct Cli { jar: PathBuf, /// Directory where configs are stored, and where the server will run [default: .] - #[arg(long, value_name = "CONFIG_DIR")] + #[arg(long, value_name = "CONFIG_DIR", env = "ALEX_CONFIG_DIR")] config: Option, /// Directory where world files will be saved [default: ../worlds] - #[arg(long, value_name = "WORLD_DIR")] + #[arg(long, value_name = "WORLD_DIR", env = "ALEX_WORLD_DIR")] world: Option, /// Directory where backups will be stored [default: ../backups] - #[arg(long, value_name = "BACKUP_DIR")] + #[arg(long, value_name = "BACKUP_DIR", env = "ALEX_WORLD_DIR")] backup: Option, /// Java command to run the server jar with - #[arg(long, value_name = "JAVA_CMD", default_value_t = String::from("java"))] + #[arg(long, value_name = "JAVA_CMD", default_value_t = String::from("java"), env = "ALEX_JAVA")] java: String, /// XMS value in megabytes for the server instance - #[arg(long, default_value_t = 1024)] + #[arg(long, default_value_t = 1024, env = "ALEX_XMS")] xms: u64, /// XMX value in megabytes for the server instance - #[arg(long, default_value_t = 2048)] + #[arg(long, default_value_t = 2048, env = "ALEX_XMX")] xmx: u64, /// How many backups to keep - #[arg(short = 'n', long, default_value_t = 7)] + #[arg(short = 'n', long, default_value_t = 7, env = "ALEX_MAX_BACKUPS")] max_backups: u64, /// How frequently to perform a backup, in minutes; 0 to disable. - #[arg(short = 't', long, default_value_t = 0)] + #[arg(short = 't', long, default_value_t = 0, env = "ALEX_FREQUENCY")] frequency: u64, } @@ -50,7 +50,9 @@ fn backups_thread(counter: Arc>, frequency: u64) { { let mut server = counter.lock().unwrap(); - server.backup(); + + // We explicitely ignore the error here, as we don't want the thread to fail + let _ = server.backup(); } } } @@ -79,9 +81,14 @@ fn main() { loop { input.clear(); - stdin.read_line(input); + + if stdin.read_line(input).is_err() { + continue; + }; + { let mut server = counter.lock().unwrap(); + if let Err(e) = server.send_command(input) { println!("{}", e); };