Move linux steps to the linux model
This commit is contained in:
74
src/linux.rs
74
src/linux.rs
@@ -1,5 +1,10 @@
|
|||||||
|
use super::terminal::Terminal;
|
||||||
|
use super::Check;
|
||||||
use failure;
|
use failure;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::process::Command;
|
||||||
|
use which::which;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug)]
|
#[derive(Copy, Clone, Debug)]
|
||||||
pub enum Distribution {
|
pub enum Distribution {
|
||||||
@@ -41,3 +46,72 @@ impl Distribution {
|
|||||||
Err(UnknownLinuxDistribution.into())
|
Err(UnknownLinuxDistribution.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn upgrade_arch_linux(
|
||||||
|
sudo: &Option<PathBuf>,
|
||||||
|
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<PathBuf>, 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<PathBuf>, 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<PathBuf>, 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(())
|
||||||
|
}
|
||||||
|
|||||||
@@ -108,11 +108,11 @@ fn run() -> Result<(), Error> {
|
|||||||
match linux::Distribution::detect() {
|
match linux::Distribution::detect() {
|
||||||
Ok(distribution) => {
|
Ok(distribution) => {
|
||||||
match distribution {
|
match distribution {
|
||||||
linux::Distribution::Arch => upgrade_arch_linux(&sudo, &terminal),
|
linux::Distribution::Arch => linux::upgrade_arch_linux(&sudo, &terminal),
|
||||||
linux::Distribution::CentOS => upgrade_redhat(&sudo, &terminal),
|
linux::Distribution::CentOS => linux::upgrade_redhat(&sudo, &terminal),
|
||||||
linux::Distribution::Fedora => upgrade_fedora(&sudo, &terminal),
|
linux::Distribution::Fedora => linux::upgrade_fedora(&sudo, &terminal),
|
||||||
linux::Distribution::Ubuntu | linux::Distribution::Debian => {
|
linux::Distribution::Ubuntu | linux::Distribution::Debian => {
|
||||||
upgrade_debian(&sudo, &terminal)
|
linux::upgrade_debian(&sudo, &terminal)
|
||||||
}
|
}
|
||||||
}.report("System upgrade", &mut reports);
|
}.report("System upgrade", &mut reports);
|
||||||
}
|
}
|
||||||
|
|||||||
72
src/steps.rs
72
src/steps.rs
@@ -1,5 +1,4 @@
|
|||||||
use super::terminal::Terminal;
|
use super::Check;
|
||||||
use super::{which, Check};
|
|
||||||
use failure;
|
use failure;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
@@ -143,75 +142,6 @@ pub fn run_homebrew(homebrew: &PathBuf) -> Result<(), failure::Error> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn upgrade_arch_linux(
|
|
||||||
sudo: &Option<PathBuf>,
|
|
||||||
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<PathBuf>, 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<PathBuf>, 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<PathBuf>, 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> {
|
pub fn run_custom_command(command: &str) -> Result<(), failure::Error> {
|
||||||
Command::new("sh")
|
Command::new("sh")
|
||||||
.arg("-c")
|
.arg("-c")
|
||||||
|
|||||||
Reference in New Issue
Block a user