use std::path::PathBuf;
use clap::Parser;
use iroh_dns_server::{Server, config::Config};
use n0_error::{Result, StdResultExt};
use tracing::{debug, info};
#[derive(Parser, Debug)]
struct Cli {
#[clap(short, long)]
config: Option<PathBuf>,
}
#[tokio::main]
async fn main() -> Result<()> {
tracing_subscriber::fmt::init();
rustls::crypto::ring::default_provider()
.install_default()
.expect("failed to set default crypto provider");
let args = Cli::parse();
let config = if let Some(path) = args.config {
debug!("loading config from {:?}", path);
Config::load(path).await?
} else {
debug!("using default config");
Config::default()
};
let server = Server::bind(config).await?;
tokio::signal::ctrl_c().await.anyerr()?;
info!("shutdown");
server.shutdown().await?;
Ok(())
}