From 850fdf63253476f943c81374194391274fda9c2d Mon Sep 17 00:00:00 2001 From: Wade Duvall <11461783+wadeduvall@users.noreply.github.com> Date: Mon, 20 May 2024 17:40:54 -0400 Subject: [PATCH] Add verbose flag (#178) * feat: add -q/--quiet flag that will only print the kernel version if system needs rebooted * feat: move from quiet flag to verbose flag, only print kernel version or package updated if verbose flag is set. Continue to display kernel version even when an update is not needed. * Apply suggestions from code review * Update src/main.rs --------- Co-authored-by: Raphael Nestler --- CHANGELOG.md | 5 +++++ src/critical_packages_check.rs | 13 +++++++++---- src/kernel.rs | 22 ++++++++++++++-------- src/main.rs | 13 +++++++++++-- 4 files changed, 39 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57845b7..ee56b96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + + * Add `--verbose` flag and make output less verbose by default + ([#178](https://github.com/rnestler/reboot-arch-btw/pull/178)) + ## [v0.7.1] - 2024-03-17 * Support libalpm v14 diff --git a/src/critical_packages_check.rs b/src/critical_packages_check.rs index 6824751..b560dc8 100644 --- a/src/critical_packages_check.rs +++ b/src/critical_packages_check.rs @@ -10,6 +10,7 @@ pub struct CriticalPackagesCheck<'a> { restart_session_package_names: Vec, session_info: SessionInfo, alpm_db: &'a alpm::Db, + verbose: bool, } impl CriticalPackagesCheck<'_> { @@ -17,6 +18,7 @@ impl CriticalPackagesCheck<'_> { reboot_package_names: Vec, restart_session_package_names: Vec, alpm_db: &alpm::Db, + verbose: bool, ) -> Result { let session_info = SessionInfo::from_utmp()?; Ok(CriticalPackagesCheck { @@ -24,6 +26,7 @@ impl CriticalPackagesCheck<'_> { restart_session_package_names, session_info, alpm_db, + verbose, }) } @@ -37,10 +40,12 @@ impl CriticalPackagesCheck<'_> { }) = package_info { if install_date > max_install_date { - println!( - "{package_name} updated {}", - package_info.unwrap().installed_reltime() - ); + if self.verbose { + println!( + "{package_name} updated {}", + package_info.unwrap().installed_reltime() + ); + } return true; } } else { diff --git a/src/kernel.rs b/src/kernel.rs index 9b198cd..2b9b165 100644 --- a/src/kernel.rs +++ b/src/kernel.rs @@ -102,10 +102,11 @@ impl KernelInfo { pub struct KernelChecker { kernel_info: KernelInfo, installed_kernel: PackageInfo, + verbose: bool, } impl KernelChecker { - pub fn new(db: &alpm::Db) -> Result { + pub fn new(db: &alpm::Db, verbose: bool) -> Result { let kernel_info = KernelInfo::from_uname()?; let kernel_package = &kernel_info.package_name; info!("Detected kernel package: {kernel_package}"); @@ -115,6 +116,7 @@ impl KernelChecker { Ok(KernelChecker { kernel_info, installed_kernel, + verbose, }) } } @@ -124,15 +126,17 @@ impl Check for KernelChecker { let cleaned_kernel_version = PackageInfo::cleanup_kernel_version(&self.installed_kernel.version) .expect("Could not clean version of installed kernel"); - println!("Kernel"); - println!( - " installed: {} (since {})", - cleaned_kernel_version, - self.installed_kernel.installed_reltime() - ); let running_kernel_version = &self.kernel_info.version; - println!(" running: {}", self.kernel_info); let should_reboot = running_kernel_version != &cleaned_kernel_version; + if self.verbose { + println!("Kernel"); + println!( + " installed: {} (since {})", + cleaned_kernel_version, + self.installed_kernel.installed_reltime() + ); + println!(" running: {}", self.kernel_info); + } if should_reboot { CheckResult::KernelUpdate } else { @@ -230,6 +234,7 @@ mod test { version: "5.19.11.arch1-1".to_owned(), install_date: None, }, + verbose: false, }; assert_eq!(kernel_checker.check(), CheckResult::KernelUpdate); @@ -243,6 +248,7 @@ mod test { version: "5.19.9.arch1-1".to_owned(), install_date: None, }, + verbose: false, }; assert_eq!(kernel_checker.check(), CheckResult::Nothing); diff --git a/src/main.rs b/src/main.rs index bb64461..b44f7f3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -48,6 +48,10 @@ struct Args { default_value = "xorg-server,xorg-xwayland" )] session_restart_packages: Vec, + + /// Print kernel version info and show updated packages. + #[clap(short, long)] + verbose: bool, } fn main() { @@ -61,14 +65,19 @@ fn main() { let mut checkers: Vec> = vec![]; - match KernelChecker::new(db) { + match KernelChecker::new(db, args.verbose) { Ok(kernel_checker) => checkers.push(Box::new(kernel_checker)), Err(err) => { error!("Could not create kernel checker: {err:#}") } } - match CriticalPackagesCheck::new(args.reboot_packages, args.session_restart_packages, db) { + match CriticalPackagesCheck::new( + args.reboot_packages, + args.session_restart_packages, + db, + args.verbose, + ) { Ok(critical_packages_checker) => checkers.push(Box::new(critical_packages_checker)), Err(err) => { error!("Could not create critical package checker: {err:#}")