From 109be4b756a54473e7cce60553727d818377a0d9 Mon Sep 17 00:00:00 2001 From: Roey Darwish Dror Date: Tue, 12 Jun 2018 21:28:32 +0300 Subject: [PATCH] Move linux steps to the linux model --- src/linux.rs | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main.rs | 8 +++--- src/steps.rs | 72 +------------------------------------------------- 3 files changed, 79 insertions(+), 75 deletions(-) diff --git a/src/linux.rs b/src/linux.rs index 7f1e5c9b..7a3ac8fa 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -1,5 +1,10 @@ +use super::terminal::Terminal; +use super::Check; use failure; use std::fs; +use std::path::PathBuf; +use std::process::Command; +use which::which; #[derive(Copy, Clone, Debug)] pub enum Distribution { @@ -41,3 +46,72 @@ impl Distribution { Err(UnknownLinuxDistribution.into()) } } + +pub fn upgrade_arch_linux( + sudo: &Option, + terminal: &Terminal, +) -> Result<(), failure::Error> { + if let Ok(yay) = which("yay") { + Command::new(yay).spawn()?.wait()?.check()?; + } else { + if let Some(sudo) = &sudo { + Command::new(&sudo) + .args(&["pacman", "-Syu"]) + .spawn()? + .wait()? + .check()?; + } else { + terminal.print_warning("No sudo or yay detected. Skipping system upgrade"); + } + } + + Ok(()) +} + +pub fn upgrade_redhat(sudo: &Option, terminal: &Terminal) -> Result<(), failure::Error> { + if let Some(sudo) = &sudo { + Command::new(&sudo) + .args(&["yum", "upgrade"]) + .spawn()? + .wait()? + .check()?; + } else { + terminal.print_warning("No sudo detected. Skipping system upgrade"); + } + + Ok(()) +} + +pub fn upgrade_fedora(sudo: &Option, terminal: &Terminal) -> Result<(), failure::Error> { + if let Some(sudo) = &sudo { + Command::new(&sudo) + .args(&["dnf", "upgrade"]) + .spawn()? + .wait()? + .check()?; + } else { + terminal.print_warning("No sudo detected. Skipping system upgrade"); + } + + Ok(()) +} + +pub fn upgrade_debian(sudo: &Option, terminal: &Terminal) -> Result<(), failure::Error> { + if let Some(sudo) = &sudo { + Command::new(&sudo) + .args(&["apt", "update"]) + .spawn()? + .wait()? + .check()?; + + Command::new(&sudo) + .args(&["apt", "dist-upgrade"]) + .spawn()? + .wait()? + .check()?; + } else { + terminal.print_warning("No sudo detected. Skipping system upgrade"); + } + + Ok(()) +} diff --git a/src/main.rs b/src/main.rs index 1e01e9c5..77fae8f9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -108,11 +108,11 @@ fn run() -> Result<(), Error> { match linux::Distribution::detect() { Ok(distribution) => { match distribution { - linux::Distribution::Arch => upgrade_arch_linux(&sudo, &terminal), - linux::Distribution::CentOS => upgrade_redhat(&sudo, &terminal), - linux::Distribution::Fedora => upgrade_fedora(&sudo, &terminal), + linux::Distribution::Arch => linux::upgrade_arch_linux(&sudo, &terminal), + linux::Distribution::CentOS => linux::upgrade_redhat(&sudo, &terminal), + linux::Distribution::Fedora => linux::upgrade_fedora(&sudo, &terminal), linux::Distribution::Ubuntu | linux::Distribution::Debian => { - upgrade_debian(&sudo, &terminal) + linux::upgrade_debian(&sudo, &terminal) } }.report("System upgrade", &mut reports); } diff --git a/src/steps.rs b/src/steps.rs index 872ab578..955f7e24 100644 --- a/src/steps.rs +++ b/src/steps.rs @@ -1,5 +1,4 @@ -use super::terminal::Terminal; -use super::{which, Check}; +use super::Check; use failure; use std::path::PathBuf; use std::process::Command; @@ -143,75 +142,6 @@ pub fn run_homebrew(homebrew: &PathBuf) -> Result<(), failure::Error> { Ok(()) } -pub fn upgrade_arch_linux( - sudo: &Option, - terminal: &Terminal, -) -> Result<(), failure::Error> { - if let Ok(yay) = which("yay") { - Command::new(yay).spawn()?.wait()?.check()?; - } else { - if let Some(sudo) = &sudo { - Command::new(&sudo) - .args(&["pacman", "-Syu"]) - .spawn()? - .wait()? - .check()?; - } else { - terminal.print_warning("No sudo or yay detected. Skipping system upgrade"); - } - } - - Ok(()) -} - -pub fn upgrade_redhat(sudo: &Option, terminal: &Terminal) -> Result<(), failure::Error> { - if let Some(sudo) = &sudo { - Command::new(&sudo) - .args(&["yum", "upgrade"]) - .spawn()? - .wait()? - .check()?; - } else { - terminal.print_warning("No sudo detected. Skipping system upgrade"); - } - - Ok(()) -} - -pub fn upgrade_fedora(sudo: &Option, terminal: &Terminal) -> Result<(), failure::Error> { - if let Some(sudo) = &sudo { - Command::new(&sudo) - .args(&["dnf", "upgrade"]) - .spawn()? - .wait()? - .check()?; - } else { - terminal.print_warning("No sudo detected. Skipping system upgrade"); - } - - Ok(()) -} - -pub fn upgrade_debian(sudo: &Option, terminal: &Terminal) -> Result<(), failure::Error> { - if let Some(sudo) = &sudo { - Command::new(&sudo) - .args(&["apt", "update"]) - .spawn()? - .wait()? - .check()?; - - Command::new(&sudo) - .args(&["apt", "dist-upgrade"]) - .spawn()? - .wait()? - .check()?; - } else { - terminal.print_warning("No sudo detected. Skipping system upgrade"); - } - - Ok(()) -} - pub fn run_custom_command(command: &str) -> Result<(), failure::Error> { Command::new("sh") .arg("-c")