Something went wrong. Try again.
Monorepo for Tangled tangled.org
Something went wrong. Try again.
1.4 kB · 50 lines
Rust
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051use std::path::PathBuf;
use clap::Parser;use tranquil_gate::{App, config::Config, router};
mod telemetry;
#[derive(Parser)]#[command(about = "Provision Tranquil delegated accounts for verified Tangled users")]struct Cli { #[arg(short, long, env = "GATE_CONFIG", value_name = "FILE")] config: Option<PathBuf>,
#[arg(long)] check_config: bool,}
#[tokio::main]async fn main() -> anyhow::Result<()> { let cli = Cli::parse(); let config = Config::load(cli.config.as_deref())?; telemetry::init(&config.log)?; let app = App::new(&config)?; if cli.check_config { println!("configuration is valid"); return Ok(()); } let listener = tokio::net::TcpListener::bind(config.bind).await?; tracing::info!(address = %listener.local_addr()?, "tranquil-gate listening"); axum::serve(listener, router(app)) .with_graceful_shutdown(shutdown_signal()) .await?; Ok(())}
async fn shutdown_signal() { #[cfg(unix)] let terminate = async { tokio::signal::unix::signal(tokio::signal::unix::SignalKind::terminate()) .expect("install SIGTERM handler") .recv() .await; }; #[cfg(not(unix))] let terminate = std::future::pending::<()>(); tokio::select! { _ = tokio::signal::ctrl_c() => {}, _ = terminate => {}, }}