asusctl: remove the panics from CLI

closes #364
This commit is contained in:
Luke D. Jones
2023-06-26 09:41:42 +12:00
parent 036a5018e0
commit 03c9f06569

View File

@@ -36,69 +36,52 @@ fn main() {
..Default::default() ..Default::default()
}, },
Err(err) => { Err(err) => {
panic!("source {}", err); println!("Error: {}", err);
return;
} }
}; };
let (dbus, _) = RogDbusClientBlocking::new() if let Ok((dbus, _)) = RogDbusClientBlocking::new().map_err(|e| {
.map_err(|e| { print_error_help(&e, None);
print_error_help(&e, None); }) {
panic!("Could not start dbus client"); if let Ok(supported) = dbus
}) .proxies()
.unwrap(); .supported()
.supported_functions()
.map_err(|e| {
print_error_help(&e, None);
})
{
if parsed.version {
println!("asusctl v{}", env!("CARGO_PKG_VERSION"));
println!();
print_info();
}
let supported = dbus if let Err(err) = do_parsed(&parsed, &supported, &dbus) {
.proxies() print_error_help(&*err, Some(&supported));
.supported() }
.supported_functions() }
.map_err(|e| {
print_error_help(&e, None);
panic!("Could not start dbus proxy");
})
.unwrap();
if parsed.version {
print_versions();
println!();
print_laptop_info();
}
if let Err(err) = do_parsed(&parsed, &supported, &dbus) {
print_error_help(&*err, Some(&supported));
} }
} }
fn print_error_help(err: &dyn std::error::Error, supported: Option<&SupportedFunctions>) { fn print_error_help(err: &dyn std::error::Error, supported: Option<&SupportedFunctions>) {
check_service("asusd"); check_service("asusd");
println!("\nError: {}\n", err); println!("\nError: {}\n", err);
print_versions(); print_info();
println!();
print_laptop_info();
if let Some(supported) = supported { if let Some(supported) = supported {
println!(); println!();
println!("Supported laptop functions:\n\n{}", supported); println!("Supported laptop functions:\n\n{}", supported);
} }
} }
fn print_versions() { fn print_info() {
println!("App and daemon versions:");
println!(" asusctl v{}", env!("CARGO_PKG_VERSION"));
println!(" asusd v{}", asusd::VERSION);
println!("\nComponent crate versions:");
println!(" rog-anime v{}", rog_anime::VERSION);
println!(" rog-aura v{}", rog_aura::VERSION);
println!(" rog-dbus v{}", rog_dbus::VERSION);
println!(" rog-profiles v{}", rog_profiles::VERSION);
println!("rog-platform v{}", rog_platform::VERSION);
}
fn print_laptop_info() {
let dmi = sysfs_class::DmiId::default(); let dmi = sysfs_class::DmiId::default();
let board_name = dmi.board_name().expect("Could not get board_name"); let board_name = dmi.board_name().expect("Could not get board_name");
let prod_family = dmi.product_family().expect("Could not get product_family"); let prod_family = dmi.product_family().expect("Could not get product_family");
println!("asusctl version: {}", env!("CARGO_PKG_VERSION"));
println!("Product family: {}", prod_family.trim()); println!(" Product family: {}", prod_family.trim());
println!("Board name: {}", board_name.trim()); println!(" Board name: {}", board_name.trim());
} }
fn check_service(name: &str) -> bool { fn check_service(name: &str) -> bool {