diff --git a/src/main.rs b/src/main.rs index 92b5f197..5d2cf72e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -134,8 +134,8 @@ fn run() -> Result<()> { println!("Error detecting current distribution: {}", e); } } - runner.execute(Step::System, "etc-update", || { - linux::run_etc_update(sudo.as_ref(), run_type) + runner.execute(Step::System, "config-update", || { + linux::run_config_update(sudo.as_ref(), run_type) })?; runner.execute(Step::Pacdiff, "pacdiff", || linux::run_pacdiff(sudo.as_ref(), run_type))?; diff --git a/src/steps/os/linux.rs b/src/steps/os/linux.rs index 0a189915..596af639 100644 --- a/src/steps/os/linux.rs +++ b/src/steps/os/linux.rs @@ -535,22 +535,22 @@ pub fn run_pihole_update(sudo: Option<&PathBuf>, run_type: RunType) -> Result<() run_type.execute(sudo).arg(pihole).arg("-up").check_run() } -pub fn run_etc_update(sudo: Option<&PathBuf>, run_type: RunType) -> Result<()> { +pub fn run_config_update(sudo: Option<&PathBuf>, run_type: RunType) -> Result<()> { let sudo = require_option(sudo, String::from("sudo is not installed"))?; - let etc_update = require("etc-update")?; - print_separator("etc-update"); - run_type.execute(sudo).arg(etc_update).check_run() -} + if let Ok(etc_update) = require("etc-update") { + print_separator("Configuration update"); + run_type.execute(sudo).arg(etc_update).check_run()?; + } else if let Ok(pacdiff) = require("pacdiff") { + if std::env::var("DIFFPROG").is_err() { + require("vim")?; + } -pub fn run_pacdiff(sudo: Option<&PathBuf>, run_type: RunType) -> Result<()> { - let sudo = require_option(sudo, String::from("sudo is not installed"))?; - let pacdiff = require("pacdiff")?; - require("vim")?; + print_separator("Configuration update"); + run_type.execute(sudo).arg(pacdiff).check_run()?; + } - print_separator("pacdiff"); - - run_type.execute(sudo).arg(pacdiff).check_run() + Ok(()) } #[cfg(test)]