Skip to content

Commit

Permalink
Add verbose flag (#178)
Browse files Browse the repository at this point in the history
* 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 <raphael.nestler@gmail.com>
  • Loading branch information
wadeduvall and rnestler committed May 20, 2024
1 parent 3cfcaab commit 850fdf6
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 14 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 9 additions & 4 deletions src/critical_packages_check.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,23 @@ pub struct CriticalPackagesCheck<'a> {
restart_session_package_names: Vec<String>,
session_info: SessionInfo,
alpm_db: &'a alpm::Db,
verbose: bool,
}

impl CriticalPackagesCheck<'_> {
pub fn new(
reboot_package_names: Vec<String>,
restart_session_package_names: Vec<String>,
alpm_db: &alpm::Db,
verbose: bool,
) -> Result<CriticalPackagesCheck> {
let session_info = SessionInfo::from_utmp()?;
Ok(CriticalPackagesCheck {
reboot_package_names,
restart_session_package_names,
session_info,
alpm_db,
verbose,
})
}

Expand All @@ -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 {
Expand Down
22 changes: 14 additions & 8 deletions src/kernel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<KernelChecker> {
pub fn new(db: &alpm::Db, verbose: bool) -> Result<KernelChecker> {
let kernel_info = KernelInfo::from_uname()?;
let kernel_package = &kernel_info.package_name;
info!("Detected kernel package: {kernel_package}");
Expand All @@ -115,6 +116,7 @@ impl KernelChecker {
Ok(KernelChecker {
kernel_info,
installed_kernel,
verbose,
})
}
}
Expand All @@ -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 {
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down
13 changes: 11 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ struct Args {
default_value = "xorg-server,xorg-xwayland"
)]
session_restart_packages: Vec<String>,

/// Print kernel version info and show updated packages.
#[clap(short, long)]
verbose: bool,
}

fn main() {
Expand All @@ -61,14 +65,19 @@ fn main() {

let mut checkers: Vec<Box<dyn Check>> = 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:#}")
Expand Down

0 comments on commit 850fdf6

Please sign in to comment.