refactor: proper cli commands per os
Diff
src/bin/server.rs | 38 ++++++++++++++++++++++----------------
src/logger.rs | 2 +-
src/winservice.rs | 2 +-
3 files changed, 24 insertions(+), 18 deletions(-)
@@ -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;
@@ -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");
}
static_web_server::Server::new(None)?.run()?;
Ok(())
}
@@ -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);
@@ -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) => {
set_service_state(&status_handle, ServiceState::Running).unwrap();