main.rs (868B)
1 use crate::config::Config; 2 use clap::Parser; 3 use mrsbfh::config::Loader; 4 use std::error::Error; 5 use tracing::*; 6 7 pub mod commands; 8 mod config; 9 mod errors; 10 mod matrix; 11 12 #[derive(Parser, Debug)] 13 #[clap(version = "0.1.0", author = "MTRNord")] 14 struct Opts { 15 #[clap(short, long, default_value = "config.yml")] 16 config: String, 17 } 18 19 #[tokio::main] 20 async fn main() -> Result<(), Box<dyn Error>> { 21 tracing_subscriber::fmt() 22 .pretty() 23 .with_thread_names(true) 24 .with_max_level(tracing::Level::INFO) 25 .init(); 26 27 info!("Starting..."); 28 let opts: Opts = Opts::parse(); 29 30 info!("Loading Configs..."); 31 let config = Config::load(opts.config)?; 32 info!("Setting up Client..."); 33 let client = &mut matrix::setup(config.clone()).await?; 34 info!("Starting Sync..."); 35 matrix::start_sync(client, config).await?; 36 37 Ok(()) 38 }