main.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use {
  2. crate::lazer_publisher::LazerPublisher,
  3. anyhow::Context,
  4. clap::Parser,
  5. tracing::{info, level_filters::LevelFilter},
  6. tracing_subscriber::{EnvFilter, fmt::format::FmtSpan},
  7. };
  8. mod config;
  9. mod http_server;
  10. mod lazer_publisher;
  11. mod publisher_handle;
  12. mod relayer_session;
  13. mod websocket_utils;
  14. #[derive(Parser)]
  15. #[command(version)]
  16. struct Cli {
  17. #[clap(short, long, default_value = "config.toml")]
  18. config: String,
  19. }
  20. #[tokio::main]
  21. async fn main() -> anyhow::Result<()> {
  22. tracing_subscriber::fmt()
  23. .with_env_filter(
  24. EnvFilter::builder()
  25. .with_default_directive(LevelFilter::INFO.into())
  26. .from_env()
  27. .expect("invalid RUST_LOG env var"),
  28. )
  29. .with_span_events(FmtSpan::NONE)
  30. .json()
  31. .with_span_list(false)
  32. .init();
  33. let args = Cli::parse();
  34. let config =
  35. config::load_config(args.config.to_string()).context("Failed to read config file")?;
  36. info!(?config, "starting lazer-agent");
  37. let lazer_publisher = LazerPublisher::new(&config).await;
  38. http_server::run(config, lazer_publisher).await?;
  39. Ok(())
  40. }