From 55577851f5cfc70e014b1adb2f03f072ce08df1c Mon Sep 17 00:00:00 2001 From: Roey Darwish Dror Date: Mon, 25 Feb 2019 15:10:28 +0200 Subject: [PATCH] More step refactoring --- src/main.rs | 29 ++++++++++--- src/steps/os/linux.rs | 99 ++++++++++++++----------------------------- 2 files changed, 54 insertions(+), 74 deletions(-) diff --git a/src/main.rs b/src/main.rs index 88d08fa5..3450e2a0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -162,10 +162,12 @@ fn run() -> Result<(), Error> { println!("Error detecting current distribution: {}", e); } } - report.push_result(execute_legacy( - || linux::run_etc_update(&sudo, run_type), + execute( + &mut report, + "etc-update", + || linux::run_etc_update(sudo.as_ref(), run_type), config.no_retry(), - )?); + )?; } } @@ -348,8 +350,18 @@ fn run() -> Result<(), Error> { #[cfg(target_os = "linux")] { - report.push_result(execute_legacy(|| linux::flatpak_update(run_type), config.no_retry())?); - report.push_result(execute_legacy(|| linux::run_snap(&sudo, run_type), config.no_retry())?); + execute( + &mut report, + "Flatpak", + || linux::flatpak_update(run_type), + config.no_retry(), + )?; + execute( + &mut report, + "snap", + || linux::run_snap(sudo.as_ref(), run_type), + config.no_retry(), + )?; } if let Some(commands) = config.commands() { @@ -363,7 +375,12 @@ fn run() -> Result<(), Error> { #[cfg(target_os = "linux")] { - report.push_result(execute_legacy(|| linux::run_fwupdmgr(run_type), config.no_retry())?); + execute( + &mut report, + "Firmware upgrades", + || linux::run_fwupdmgr(run_type), + config.no_retry(), + )?; execute( &mut report, "Restarts", diff --git a/src/steps/os/linux.rs b/src/steps/os/linux.rs index 51bd4672..660b2dd1 100644 --- a/src/steps/os/linux.rs +++ b/src/steps/os/linux.rs @@ -245,88 +245,51 @@ pub fn run_needrestart(sudo: Option<&PathBuf>, run_type: RunType) -> Result<(), } #[must_use] -pub fn run_fwupdmgr(run_type: RunType) -> Option<(&'static str, bool)> { - if let Some(fwupdmgr) = which("fwupdmgr") { - print_separator("Firmware upgrades"); +pub fn run_fwupdmgr(run_type: RunType) -> Result<(), Error> { + let fwupdmgr = require("fwupdmgr")?; - let success = || -> Result<(), Error> { - run_type.execute(&fwupdmgr).arg("refresh").check_run()?; - run_type.execute(&fwupdmgr).arg("get-updates").check_run()?; - Ok(()) - }() - .is_ok(); + print_separator("Firmware upgrades"); - return Some(("Firmware upgrade", success)); - } - - None + run_type.execute(&fwupdmgr).arg("refresh").check_run()?; + run_type.execute(&fwupdmgr).arg("get-updates").check_run() } #[must_use] -pub fn flatpak_update(run_type: RunType) -> Option<(&'static str, bool)> { - if let Some(flatpak) = which("flatpak") { - print_separator("Flatpak User Packages"); +pub fn flatpak_update(run_type: RunType) -> Result<(), Error> { + let flatpak = require("flatpak")?; + print_separator("Flatpak User Packages"); - let success = || -> Result<(), Error> { - run_type - .execute(&flatpak) - .args(&["update", "--user", "-y"]) - .check_run()?; - run_type - .execute(&flatpak) - .args(&["update", "--system", "-y"]) - .check_run()?; - Ok(()) - }() - .is_ok(); - - return Some(("Flatpak User Packages", success)); - } - - None + run_type + .execute(&flatpak) + .args(&["update", "--user", "-y"]) + .check_run()?; + run_type + .execute(&flatpak) + .args(&["update", "--system", "-y"]) + .check_run() } #[must_use] -pub fn run_snap(sudo: &Option, run_type: RunType) -> Option<(&'static str, bool)> { - if let Some(sudo) = sudo { - if let Some(snap) = which("snap") { - if PathBuf::from("/var/snapd.socket").exists() { - print_separator("snap"); +pub fn run_snap(sudo: Option<&PathBuf>, run_type: RunType) -> Result<(), Error> { + let sudo = require_option(sudo)?; + let snap = require("snap")?; - let success = || -> Result<(), Error> { - run_type - .execute(&sudo) - .args(&[snap.to_str().unwrap(), "refresh"]) - .check_run()?; - - Ok(()) - }() - .is_ok(); - - return Some(("snap", success)); - } - } + if !PathBuf::from("/var/snapd.socket").exists() { + Err(ErrorKind::SkipStep)?; } + print_separator("snap"); - None + run_type + .execute(sudo) + .args(&[snap.to_str().unwrap(), "refresh"]) + .check_run() } #[must_use] -pub fn run_etc_update(sudo: &Option, run_type: RunType) -> Option<(&'static str, bool)> { - if let Some(sudo) = sudo { - if let Some(etc_update) = which("etc-update") { - print_separator("etc-update"); +pub fn run_etc_update(sudo: Option<&PathBuf>, run_type: RunType) -> Result<(), Error> { + let sudo = require_option(sudo)?; + let etc_update = require("etc_update")?; + print_separator("etc-update"); - let success = || -> Result<(), Error> { - run_type.execute(&sudo).arg(&etc_update.to_str().unwrap()).check_run()?; - - Ok(()) - }() - .is_ok(); - - return Some(("etc-update", success)); - } - } - - None + run_type.execute(sudo).arg(&etc_update.to_str().unwrap()).check_run() }