refactor: simplify code with .ok()

This commit is contained in:
Adrian Groh 2023-05-20 15:44:03 +02:00
parent 5f42965806
commit a8b69d36ef
Signed by: Gobidev
GPG Key ID: 3AA3153E98B0D771
2 changed files with 36 additions and 78 deletions

View File

@ -246,18 +246,12 @@ pub fn os(general_readout: &GeneralReadout) -> Option<String> {
}
}
}
_ => match general_readout.os_name() {
Ok(os) => Some(os),
Err(_) => None,
},
_ => general_readout.os_name().ok(),
}
}
pub fn kernel(kernel_readout: &KernelReadout) -> Option<String> {
match kernel_readout.os_release() {
Ok(kernel_version) => Some(kernel_version),
Err(_) => None,
}
kernel_readout.os_release().ok()
}
fn seconds_to_string(time: usize) -> String {
@ -283,10 +277,7 @@ fn seconds_to_string(time: usize) -> String {
}
pub fn uptime(general_readout: &GeneralReadout) -> Option<String> {
match general_readout.uptime() {
Ok(uptime) => Some(seconds_to_string(uptime)),
Err(_) => None,
}
Some(seconds_to_string(general_readout.uptime().ok()?))
}
pub fn host(general_readout: &GeneralReadout) -> Option<String> {
@ -348,13 +339,11 @@ pub fn host(general_readout: &GeneralReadout) -> Option<String> {
Some(final_str)
}
}
_ => match general_readout.machine() {
Ok(host) => Some(host),
Err(_) => match general_readout.cpu_model_name() {
Ok(host) => Some(host),
Err(_) => None,
},
},
// on non-linux systems, try general_readout.machine(), use cpu model name as fallback
_ => general_readout
.machine()
.ok()
.or_else(|| general_readout.cpu_model_name().ok()),
}
}
@ -374,43 +363,31 @@ pub fn logo(logo_name: &str) -> Logo {
}
pub fn shell(general_readout: &GeneralReadout) -> Option<String> {
match general_readout.shell(
general_readout
.shell(
libmacchina::traits::ShellFormat::Relative,
libmacchina::traits::ShellKind::Default,
) {
Ok(shell) => Some(shell),
Err(_) => match dotenvy::var("SHELL") {
Ok(shell) => Some(shell),
Err(_) => None,
},
}
)
.ok()
.or_else(|| dotenvy::var("SHELL").ok())
}
pub fn editor() -> Option<String> {
match env::var("VISUAL") {
Ok(editor) => Some(editor.trim().to_owned()),
Err(_) => match env::var("EDITOR") {
Ok(editor) => Some(editor.trim().to_owned()),
Err(_) => None,
},
}
env::var("VISUAL")
.or_else(|_| env::var("EDITOR"))
.ok()
.map(|editor| editor.trim().to_owned())
}
pub fn wm(general_readout: &GeneralReadout) -> Option<String> {
match general_readout.window_manager() {
Ok(wm) => Some(wm),
Err(_) => None,
}
general_readout.window_manager().ok()
}
pub fn de(general_readout: &GeneralReadout) -> Option<String> {
match general_readout.desktop_environment() {
Ok(de) => Some(de),
Err(_) => match dotenvy::var("XDG_CURRENT_DESKTOP") {
Ok(de) => Some(de),
Err(_) => None,
},
}
general_readout
.desktop_environment()
.ok()
.or_else(|| dotenvy::var("XDG_CURRENT_DESKTOP").ok())
}
pub fn palette() -> String {

View File

@ -150,8 +150,7 @@ fn pfetch(info: Vec<(pfetch::Color, String, String)>, logo: pfetch::Logo, logo_e
println!("{pfetch_str}");
// enable line wrap
crossterm::execute!(std::io::stdout(), crossterm::terminal::EnableLineWrap)
.unwrap_or_default();
crossterm::execute!(std::io::stdout(), crossterm::terminal::EnableLineWrap).unwrap_or_default();
}
struct Readouts {
@ -168,21 +167,11 @@ fn get_info(
) -> Option<String> {
match info {
PfetchInfo::Ascii => None,
PfetchInfo::Title => {
let hostname_override = match dotenvy::var("HOSTNAME") {
Ok(hostname) => Some(hostname),
Err(_) => None,
};
let username_override = match dotenvy::var("USER") {
Ok(username) => Some(username),
Err(_) => None,
};
pfetch::user_at_hostname(
PfetchInfo::Title => pfetch::user_at_hostname(
&readouts.general_readout,
&username_override,
&hostname_override,
)
}
&dotenvy::var("USER").ok(),
&dotenvy::var("HOSTNAME").ok(),
),
PfetchInfo::Os => pfetch::os(&readouts.general_readout),
PfetchInfo::Host => pfetch::host(&readouts.general_readout),
PfetchInfo::Kernel => pfetch::kernel(&readouts.kernel_readout),
@ -291,20 +280,12 @@ fn main() {
.iter()
.filter_map(|info| match info {
PfetchInfo::Os => Some((logo.primary_color, info.to_string(), os.clone())),
_ => {
let info_result = get_info(info, &readouts, skip_slow_package_managers);
match info_result {
Some(info_str) => match info {
PfetchInfo::Title => Some((logo.secondary_color, info_str, "".to_string())),
PfetchInfo::BlankLine => {
Some((logo.primary_color, "".to_string(), "".to_string()))
}
PfetchInfo::Palette => Some((logo.primary_color, info_str, "".to_string())),
_ => Some((logo.primary_color, info.to_string(), info_str)),
},
None => None,
}
}
_ => get_info(info, &readouts, skip_slow_package_managers).map(|info_str| match info {
PfetchInfo::Title => (logo.secondary_color, info_str, "".to_string()),
PfetchInfo::BlankLine => (logo.primary_color, "".to_string(), "".to_string()),
PfetchInfo::Palette => (logo.primary_color, info_str, "".to_string()),
_ => (logo.primary_color, info.to_string(), info_str),
}),
})
.collect();