index : static-web-server.git

ascending towards madness

author Jose Quintana <joseluisquintana20@gmail.com> 2022-05-18 22:48:24.0 +00:00:00
committer Jose Quintana <joseluisquintana20@gmail.com> 2022-05-18 22:48:24.0 +00:00:00
commit
c84d2fef01dca387465f98e1ae6ddc8a79e89ce5 [patch]
tree
9f03141d3708253fb7a4962d2dab9019759e4236
parent
df293b9e0b85b6efceb1d5906f4f11932962c145
download
c84d2fef01dca387465f98e1ae6ddc8a79e89ce5.tar.gz

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(-)

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();