use connectrpc::Router;
use connectrpc_reflection::{Reflector, install};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut args = std::env::args().skip(1);
let fds_path = args
.next()
.ok_or("usage: reflection_server <fds-file> [addr]")?;
let addr = args.next().unwrap_or_else(|| "127.0.0.1:50051".to_owned());
let bytes = std::fs::read(&fds_path)?;
let reflector = Reflector::from_descriptor_set_bytes(&bytes)?;
println!("serving {reflector:?} on {addr}");
let router = install(Router::new(), reflector);
let listener = tokio::net::TcpListener::bind(&addr).await?;
axum::serve(listener, router.into_axum_router()).await?;
Ok(())
}