diff options
| author | Naz <ndpm13@ch-naseem.com> | 2025-10-09 14:08:47 +0100 |
|---|---|---|
| committer | Naz <ndpm13@ch-naseem.com> | 2025-10-09 14:08:47 +0100 |
| commit | 50cf5960cb1f0af831e28eb08b15b97794287f87 (patch) | |
| tree | a7217fe0cfd4acfaf532a45a9c1333ed7432c30e /src/lib.rs | |
| parent | 2735ef9f62453907e68d9a7e10b209b3239eb9e5 (diff) | |
✨feat: add serv subcommand using Clap
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 27 |
1 files changed, 20 insertions, 7 deletions
@@ -1,3 +1,4 @@ +mod args; mod config; mod errors; mod handlers; @@ -8,22 +9,34 @@ pub use errors::{Error, Result}; use std::net::{IpAddr, Ipv6Addr, SocketAddr}; use axum::{Router, routing::get}; +use clap::Parser; use tokio::net::TcpListener; use tower_http::services::ServeFile; -pub async fn run() -> Result<()> { - let config = config::Config::new()?; +use args::{Cli, Command}; +use config::Config; - let app = Router::new() +pub fn app(config: Config) -> Router { + Router::new() .nest_service("/static/style.css", ServeFile::new(&config.style_file)) .nest_service("/static/favicon.svg", ServeFile::new(&config.favicon_file)) .route("/", get(handlers::handler)) - .with_state(config.clone()); + .with_state(config) +} + +pub async fn run() -> Result<()> { + let args = Cli::parse(); + + let config = config::Config::new()?; - let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), config.port); - let listener = TcpListener::bind(socket).await?; + match args.command { + Command::Serv => { + let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), config.port); + let listener = TcpListener::bind(socket).await?; - axum::serve(listener, app).await?; + axum::serve(listener, app(config.clone())).await?; + } + } Ok(()) } |
