feat: cli opts

This commit is contained in:
2023-06-13 15:56:08 +02:00
parent 78999174ab
commit d90daa0423
3 changed files with 216 additions and 5 deletions

View File

@@ -17,3 +17,4 @@ tower = "0.4.13"
uuid.workspace = true
tower-http = { version = "0.4.0", features = ["fs", "trace", "cors"] }
tokio-stream = { version = "0.1.14", features = ["sync"] }
clap = { version = "4.3.3", features = ["derive"] }

View File

@@ -10,6 +10,8 @@ use axum::Extension;
use axum::Json;
use axum::Router;
use axum::TypedHeader;
use clap::command;
use clap::Parser;
use common::Achievement;
use common::CreateAchievement;
use common::CreateMilestone;
@@ -52,10 +54,28 @@ impl IntoResponse for HandlerError {
}
}
#[derive(clap::Parser)]
#[command(author, version, about, long_about = None)]
struct Opts {
#[clap(short, long, default_value = "127.0.0.1")]
address: String,
#[clap(short, long, default_value = "4000")]
port: u16,
}
#[tokio::main]
async fn main() {
tracing_subscriber::fmt::init();
let opts: Opts = Opts::parse();
tracing::info!("Address: {}", opts.address);
tracing::info!("Port: {}", opts.port);
let socket = format!("{}:{}", opts.address, opts.port);
let socket_addr = socket.parse::<SocketAddr>().unwrap();
let init_app_state = match AppState::read_state().await {
Ok(state) => state,
Err(AppStateReadError::FileReadError(_)) => {
@@ -123,10 +143,8 @@ async fn main() {
)
.layer(CorsLayer::permissive());
let addr = SocketAddr::from(([0, 0, 0, 0], 4000));
tracing::debug!("listening on {}", addr);
let server = axum::Server::bind(&addr)
tracing::debug!("listening on {}", socket_addr);
let server = axum::Server::bind(&socket_addr)
.serve(app.into_make_service())
.with_graceful_shutdown(async {
shutdown_rx.changed().await.unwrap();