refactor: move entrypoint to bin

This commit is contained in:
2026-06-13 06:26:24 +02:00
parent 78ff3473ee
commit 653accc511

43
src/bin/pokedex-api.rs Normal file
View File

@@ -0,0 +1,43 @@
#![deny(warnings)]
#![deny(clippy::all, clippy::pedantic, clippy::nursery, clippy::cargo)]
#![allow(clippy::missing_errors_doc, clippy::multiple_crate_versions)]
use pokedex_api::{app, config::AppConfig, telemetry};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
telemetry::init_tracing();
let config = AppConfig::from_env()?;
let listener = tokio::net::TcpListener::bind(config.bind_addr).await?;
let state = app::AppState::from_config(&config)?;
axum::serve(listener, app::create_app(state))
.with_graceful_shutdown(shutdown_signal())
.await?;
Ok(())
}
async fn shutdown_signal() {
let ctrl_c = async {
tokio::signal::ctrl_c()
.await
.expect("failed to install Ctrl+C handler");
};
#[cfg(unix)]
let terminate = async {
tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate())
.expect("failed to install SIGTERM handler")
.recv()
.await;
};
#[cfg(not(unix))]
let terminate = std::future::pending::<()>();
tokio::select! {
() = ctrl_c => {},
() = terminate => {},
}
}