From c84d2fef01dca387465f98e1ae6ddc8a79e89ce5 Mon Sep 17 00:00:00 2001 From: Jose Quintana Date: Thu, 19 May 2022 00:48:24 +0200 Subject: [PATCH] refactor: proper cli commands per os --- src/bin/server.rs | 38 ++++++++++++++++++++++---------------- src/logger.rs | 2 +- src/winservice.rs | 2 +- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/bin/server.rs b/src/bin/server.rs index e58b9bc..4c52285 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -9,19 +9,8 @@ static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc; use static_web_server::Result; -#[cfg(unix)] -fn main() -> Result { - use static_web_server::Server; - - Server::new(None)?.run()?; - - Ok(()) -} - -#[cfg(windows)] fn main() -> Result { use static_web_server::settings::Commands; - use static_web_server::winservice; use static_web_server::Settings; // Get server config @@ -29,14 +18,31 @@ fn main() -> Result { if let Some(commands) = opts.general.commands { match commands { - Commands::Install {} => winservice::install_service()?, - Commands::Uninstall {} => winservice::uninstall_service()?, + Commands::Install {} => { + #[cfg(windows)] + return static_web_server::winservice::install_service(); + + #[cfg(unix)] + println!("ignored: `install` command is only available for Windows"); + } + Commands::Uninstall {} => { + #[cfg(windows)] + return static_web_server::winservice::uninstall_service(); + + #[cfg(unix)] + println!("ignored: `uninstall` command is only available for Windows"); + } } } else if opts.general.as_windows_service { - winservice::run_server_as_service()? - } else { - static_web_server::Server::new(None)?.run()?; + #[cfg(windows)] + return static_web_server::winservice::run_server_as_service(); + + #[cfg(unix)] + println!("ignored: `--as-windows-service` option is only available for Windows"); } + // Run the server by default + static_web_server::Server::new(None)?.run()?; + Ok(()) } diff --git a/src/logger.rs b/src/logger.rs index 84bab0a..1540a4c 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -7,7 +7,7 @@ use crate::{Context, Result}; pub fn init(log_level: &str) -> Result { let log_level = log_level.to_lowercase(); - configure("trace").with_context(|| "failed to initialize logging")?; + configure(&log_level).with_context(|| "failed to initialize logging")?; tracing::info!("logging level: {}", log_level); diff --git a/src/winservice.rs b/src/winservice.rs index 0eccf15..3494b50 100644 --- a/src/winservice.rs +++ b/src/winservice.rs @@ -96,7 +96,7 @@ fn run_service() -> Result<()> { set_service_state(&status_handle, ServiceState::StartPending)?; println!("sws service start pending"); - match Server::new(Some(shutdown_rx), false) { + match Server::new(Some(shutdown_rx)) { Ok(server) => { // Service is running set_service_state(&status_handle, ServiceState::Running).unwrap(); -- libgit2 1.7.2