use std::path::PathBuf; use clap::Parser; use color_eyre::eyre::Result; use omnigraph_server::{ServerConfig, init_tracing, load_server_settings, serve}; #[derive(Debug, Parser)] #[command(name = "omnigraph-server")] #[command(about = "HTTP server for the Omnigraph graph database")] struct Cli { /// Graph URI uri: Option, #[arg(long)] target: Option, #[arg(long)] config: Option, /// Boot from a cluster: either a config directory (storage resolved /// through cluster.yaml) or a storage-root URI directly /// (s3://bucket/prefix — config-free serving from the bucket). /// Exclusive: cannot combine with , --target, or --config. #[arg(long)] cluster: Option, #[arg(long)] bind: Option, /// Run without bearer tokens and without a policy file (MR-723). /// Required when neither is configured — otherwise the server /// refuses to start to prevent shipping the illusion of protection. /// Equivalent to setting `OMNIGRAPH_UNAUTHENTICATED=1`. #[arg(long)] unauthenticated: bool, } #[tokio::main] async fn main() -> Result<()> { color_eyre::install()?; init_tracing(); let cli = Cli::parse(); let settings: ServerConfig = load_server_settings( cli.config.as_ref(), cli.cluster.as_ref(), cli.uri, cli.target, cli.bind, cli.unauthenticated, ) .await?; serve(settings).await }