diff --git a/src/main.rs b/src/main.rs index 589eef5d..2b4b1461 100644 --- a/src/main.rs +++ b/src/main.rs @@ -147,9 +147,8 @@ fn main() -> Result<(), Error> { Ok(distribution) => { match distribution { linux::Distribution::Arch => upgrade_arch_linux(&sudo, &terminal), - linux::Distribution::CentOS | linux::Distribution::Fedora => { - upgrade_redhat(&sudo, &terminal) - } + linux::Distribution::CentOS => upgrade_redhat(&sudo, &terminal), + linux::Distribution::Fedora => upgrade_fedora(&sudo, &terminal), linux::Distribution::Ubuntu | linux::Distribution::Debian => { upgrade_debian(&sudo, &terminal) } diff --git a/src/steps.rs b/src/steps.rs index 569792b0..54e64db3 100644 --- a/src/steps.rs +++ b/src/steps.rs @@ -189,6 +189,23 @@ pub fn upgrade_redhat( Ok(()) } +pub fn upgrade_fedora( + sudo: &Result, + terminal: &Terminal, +) -> Result<(), failure::Error> { + if let Ok(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: &Result, terminal: &Terminal,