refactor: simplify code with .ok()
This commit is contained in:
parent
5f42965806
commit
a8b69d36ef
67
src/lib.rs
67
src/lib.rs
@ -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 {
|
||||
|
||||
41
src/main.rs
41
src/main.rs
@ -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();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user