From 7d43057c272f4f0ce432846b5127a4fd05e07b5d Mon Sep 17 00:00:00 2001 From: Roey Darwish Dror Date: Sat, 3 Nov 2018 22:57:09 +0200 Subject: [PATCH] Support OpenSUSE --- src/linux.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/linux.rs b/src/linux.rs index 12690d48..cd215250 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -14,6 +14,7 @@ pub enum Distribution { Debian, Ubuntu, Gentoo, + OpenSuse, } #[derive(Debug, Fail)] @@ -48,6 +49,10 @@ impl Distribution { return Ok(Distribution::Debian); } + if content.contains("openSUSE") { + return Ok(Distribution::OpenSuse); + } + if PathBuf::from("/etc/gentoo-release").exists() { return Ok(Distribution::Gentoo); } @@ -70,6 +75,7 @@ impl Distribution { Distribution::Fedora => upgrade_fedora(&sudo, terminal, dry_run), Distribution::Ubuntu | Distribution::Debian => upgrade_debian(&sudo, terminal, dry_run), Distribution::Gentoo => upgrade_gentoo(&sudo, terminal, dry_run), + Distribution::OpenSuse => upgrade_opensuse(&sudo, terminal, dry_run), }; Some(("System update", success.is_ok())) @@ -143,6 +149,26 @@ fn upgrade_redhat(sudo: &Option, terminal: &mut Terminal, dry_run: bool Ok(()) } +fn upgrade_opensuse(sudo: &Option, terminal: &mut Terminal, dry_run: bool) -> Result<(), failure::Error> { + if let Some(sudo) = &sudo { + Executor::new(&sudo, dry_run) + .args(&["/usr/bin/zypper", "refresh"]) + .spawn()? + .wait()? + .check()?; + + Executor::new(&sudo, dry_run) + .args(&["/usr/bin/zypper", "dist-upgrade"]) + .spawn()? + .wait()? + .check()?; + } else { + terminal.print_warning("No sudo detected. Skipping system upgrade"); + } + + Ok(()) +} + fn upgrade_fedora(sudo: &Option, terminal: &mut Terminal, dry_run: bool) -> Result<(), failure::Error> { if let Some(sudo) = &sudo { Executor::new(&sudo, dry_run)