// SPDX-License-Identifier: AGPL-3.0-or-later use anyhow::Context; use fluxer_admin::{build_router, config::AdminConfig}; use tokio::net::TcpListener; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; #[tokio::main] async fn main() -> anyhow::Result<()> { tracing_subscriber::registry() .with(fluxer_common::config::env_filter("info")) .with(tracing_subscriber::fmt::layer()) .init(); let config = AdminConfig::from_env()?; let addr = format!("{}:{}", config.host, config.port); let router = build_router(config); let listener = TcpListener::bind(&addr) .await .with_context(|| format!("failed to bind Fluxer admin service on {addr}"))?; tracing::info!(%addr, "starting Fluxer admin service"); axum::serve(listener, router) .with_graceful_shutdown(fluxer_common::shutdown::wait_for_shutdown()) .await .context("admin server exited unexpectedly")?; Ok(()) }