better error handling in main

This commit is contained in:
Djairo Hougee 2023-05-09 17:50:02 +02:00
parent cf69ad0c19
commit bdfdfa61cd
1 changed files with 28 additions and 26 deletions

View File

@ -1,6 +1,6 @@
use std::sync::Arc; use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::thread::{self}; use std::thread;
use clap::Parser; use clap::Parser;
use mpris::PlayerFinder; use mpris::PlayerFinder;
use structs::cli::Cli; use structs::cli::Cli;
@ -29,35 +29,37 @@ fn default_loop(pf: &PlayerFinder, cfg: &Config, data: &mut Data) {
} }
fn main() { fn main() {
//dotenvy::dotenv().expect("Failed to read .env file");
std::env::set_var("RUST_LOG", "error"); std::env::set_var("RUST_LOG", "error");
if let Err(e) = env_logger::init() { if let Err(e) = env_logger::init() {
panic!("{}", e); panic!("{}", e);
} }
let cli = Cli::parse(); let cli = Cli::parse();
let mut cfg: Config = confy::load("polybar-now-playing", cli.config_file.as_str()).unwrap(); //TODO: error handling match confy::load::<Config>("polybar-now-playing", cli.config_file.as_str()) {
cfg.priorities_to_lower(); Ok(cfg) => {
let mut data: Data = Data::default(); let mut data: Data = Data::default();
let term = Arc::new(AtomicBool::new(false)); let term = Arc::new(AtomicBool::new(false));
let pf: PlayerFinder = PlayerFinder::new()
.expect("Failed to connect to Dbus!");
if let Err(e) = signal_hook::flag::register(signal_hook::consts::SIGUSR1, Arc::clone(&term)) {
panic!("{}", e);
}
let pf: PlayerFinder = PlayerFinder::new() loop {
.expect("Failed to connect to Dbus!"); thread::sleep(cfg.update_delay);
match cli.debug {
if let Err(e) = signal_hook::flag::register(signal_hook::consts::SIGUSR1, Arc::clone(&term)) { true => print_players(&pf),
panic!("{}", e); false => default_loop(&pf, &cfg, &mut data),
} }
loop { if term.load(Ordering::Relaxed) {
thread::sleep(cfg.update_delay); handle_signal(&data);
match cli.debug { term.swap(false, Ordering::Relaxed);
true => print_players(&pf), };
false => default_loop(&pf, &cfg, &mut data), }
} },
Err(_) => println!("Failed to read config file {}", cli.config_file),
if term.load(Ordering::Relaxed) { };
handle_signal(&data); }
term.swap(false, Ordering::Relaxed);
};
}
}