From e607ce53ea8bfafe7fb8b0e7c6f0454a9456570a Mon Sep 17 00:00:00 2001 From: Jeremy Wall Date: Sat, 3 Feb 2024 16:31:28 -0600 Subject: [PATCH] init: scaffolding for cli argument parsing --- src/main.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6e13556..378e610 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,21 +17,30 @@ use std::sync::Arc; use async_io::Async; use axum::{self, routing::*, Router}; +use clap::{self, Parser}; use smol_macros::main; mod routes; +#[derive(clap::Parser)] +#[command(author, version, about, long_about = None)] +struct Cli { + #[arg(long)] + listen: Option, +} + main! { async fn main(ex: &Arc>) -> io::Result<()> { + let args = Cli::parse(); let router = Router::new() // JSON api endpoints .nest("/api", routes::mk_api_routes()) // HTMX ui component endpoints .nest("/ui", routes::mk_ui_routes()) .route("/", get(routes::index)); - + let socket_addr = args.listen.unwrap_or("127.0.0.1:3000".parse().unwrap()); // TODO(jwall): Take this from clap arguments - let listener = Async::::bind(([127, 0, 0, 1], 3000)).unwrap(); + let listener = Async::::bind(socket_addr).unwrap(); smol_axum::serve(ex.clone(), listener, router).await } }