feat: cli opts
This commit is contained in:
@@ -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"] }
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user