diff --git a/src/app.rs b/src/app.rs index c27799f..04fa49e 100644 --- a/src/app.rs +++ b/src/app.rs @@ -15,7 +15,7 @@ fn run( }: Config, ) -> R<()> { set_color_mode(color_mode); - header(format_args!("Checking AUR updates...")); + print_header("Checking AUR updates..."); check_updates(find_foreign_packages(ignores, ignore_groups)?) } diff --git a/src/app/check.rs b/src/app/check.rs index db565d0..11156f8 100644 --- a/src/app/check.rs +++ b/src/app/check.rs @@ -17,12 +17,8 @@ use Status::*; fn print_status(status: Status) { match status { - HasUpdate(name, ver, new_ver) => update( - format_args!("{name}"), - format_args!("{ver}"), - format_args!("{new_ver}"), - ), - NotInAUR(name) => package(format_args!("{name}"), format_args!("is not in AUR")), + HasUpdate(name, ver, new_ver) => print_update(name, ver, new_ver), + NotInAUR(name) => print_package(name, "is not in AUR"), _ => {} } } @@ -49,7 +45,7 @@ fn count_updates(state: &[Status]) -> usize { pub fn check_updates(pkgs: Vec<(String, String)>) -> R<()> { if pkgs.is_empty() { - message(format_args!("no packages to check")); + print_message("no packages to check"); return Ok(()); } @@ -57,7 +53,7 @@ pub fn check_updates(pkgs: Vec<(String, String)>) -> R<()> { let state = gen_state(pkgs, updates); if count_updates(&state) == 0 { - message(format_args!("no updates")); + print_message("no updates"); } state.into_iter().for_each(print_status); diff --git a/src/app/local.rs b/src/app/local.rs index 8f6d355..f3ed396 100644 --- a/src/app/local.rs +++ b/src/app/local.rs @@ -21,7 +21,7 @@ pub fn find_foreign_packages( alpm.set_event_cb((), |e, _| { if let Event::DatabaseMissing(event) = e.event() { - warning(format_args!( + print_warning(format_args!( "database file for '{}' does not exist (use 'pacman -Sy' to download)", event.dbname() )) diff --git a/src/main.rs b/src/main.rs index a91d884..294c585 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,7 +11,7 @@ fn main() -> ExitCode { set_color_mode(ColorMode::Auto); match run_app() { Err(e) => { - error(format_args!("{e}")); + print_error(e); ExitCode::FAILURE } _ => ExitCode::SUCCESS, diff --git a/src/print.rs b/src/print.rs index 6714f4e..7313dda 100644 --- a/src/print.rs +++ b/src/print.rs @@ -1,5 +1,5 @@ use std::{ - fmt::Arguments, + fmt::Display, sync::atomic::{AtomicBool, Ordering::Relaxed}, }; @@ -30,52 +30,49 @@ pub fn set_color_mode(mode: ColorMode) { } macro_rules! print_to { - ($p: ident, $pl: ident, $c: expr, $n: expr) => {{ + ($p: ident, $n: expr, $c: expr) => { match COLOR.load(Relaxed) { - true => { - $p!($c); - $pl!("\x1b[0m"); - } - false => $pl!($n), - }; - }}; + true => $p!($c), + false => $p!($n), + } + }; } macro_rules! P { - ($c: expr, $n: expr $(,)?) => { - print_to!(print, println, $c, $n) + ($n: expr, $c: expr $(,)?) => { + print_to!(println, $n, $c) }; } -macro_rules! E { - ($c: expr, $n: expr $(,)?) => { - print_to!(eprint, eprintln, $c, $n) +macro_rules! PE { + ($n: expr, $c: expr $(,)?) => { + print_to!(eprintln, $n, $c) }; } -pub fn header(s: Arguments) { - P!("\x1b[1;34m::\x1b[0;1m {s}", ":: {s}") +pub fn print_header(s: impl Display) { + P!(":: {s}", "\x1b[1;34m::\x1b[0;1m {s}\x1b[0m"); } -pub fn message(s: Arguments) { - P!("\x1b[0m {s}", " {s}") +pub fn print_message(s: impl Display) { + P!(" {s}", "\x1b[0m {s}\x1b[0m"); } -pub fn update(name: Arguments, ver: Arguments, new_ver: Arguments) { +pub fn print_update(name: impl Display, ver: impl Display, new_ver: impl Display) { P!( - "\x1b[0;1m{name} \x1b[1;31m{ver}\x1b[0m => \x1b[1;32m{new_ver}", - "{name} {ver} => {new_ver}" - ) + "{name} {ver} => {new_ver}", + "\x1b[0;1m{name} \x1b[1;31m{ver}\x1b[0m => \x1b[1;32m{new_ver}\x1b[0m", + ); } -pub fn package(name: Arguments, s: Arguments) { - P!("\x1b[0;1m{name}\x1b[0m {s}", "{name} {s}") +pub fn print_package(name: impl Display, s: impl Display) { + P!("{name} {s}", "\x1b[0;1m{name}\x1b[0m {s}\x1b[0m"); } -pub fn error(e: Arguments) { - E!("\x1b[1;31merror:\x1b[0m {e}", "error: {e}") +pub fn print_error(e: impl Display) { + PE!("error: {e}", "\x1b[1;31merror:\x1b[0m {e}\x1b[0m"); } -pub fn warning(w: Arguments) { - E!("\x1b[1;33mwarning:\x1b[0m {w}", "warning: {w}") +pub fn print_warning(w: impl Display) { + PE!("warning: {w}", "\x1b[1;33mwarning:\x1b[0m {w}\x1b[0m"); }