fn main() { let args: Vec = std::env::args().collect(); let opts = match knotless_serve::parse_args(&args) { Ok(opts) => opts, Err(usage) => { eprintln!("{usage}"); std::process::exit(2); } }; // KNOTLESS_COMMIT is the commit the image was built from, set as it // runs (Dockerfile), so the binary is the same at every commit. let (version, commit) = ( env!("CARGO_PKG_VERSION"), std::env::var("KNOTLESS_COMMIT").ok(), ); knotless::telemetry::init("knotless-serve", version, commit.as_deref()); let ctx = knotless::env::Ctx::new(knotless::env::Env::from_process()); let runtime = tokio::runtime::Runtime::new().expect("a runtime builds"); if let Err(err) = runtime.block_on(knotless_serve::run(opts, ctx)) { let f = knotless::telemetry::Fields { error: Some(format!("{err:#}")), ..Default::default() }; knotless::telemetry::note( knotless::telemetry::Level::ERROR, "knotless-serve failed", &f, ); eprintln!("knotless-serve: {err:#}"); std::process::exit(1); } }