diff --git a/src/alpm_helper.rs b/src/alpm_helper.rs index 0b9ee03..84c0f13 100644 --- a/src/alpm_helper.rs +++ b/src/alpm_helper.rs @@ -1,5 +1,7 @@ use crate::utils; use crate::utils::PacmanWrapper; +use std::path::Path; +use subprocess::Exec; #[derive(Clone, Debug)] #[repr(C)] @@ -78,25 +80,32 @@ impl AlpmHelper { if pkg_list.is_empty() { return false; } - let (cmd, escalate) = match install { - true => match utils::get_pacman_wrapper_gui() { - PacmanWrapper::Pamac => ("pamac-installer", false), - PacmanWrapper::Pak => ("pak -Sy", false), - PacmanWrapper::Yay => ("yay -Sy", false), - PacmanWrapper::Paru => ("paru -Sy", false), - _ => ("pacman -Sy", true), - }, - false => match utils::get_pacman_wrapper_gui() { - PacmanWrapper::Pamac => ("pamac-installer --remove", false), - PacmanWrapper::Pak => ("pak -R", false), - PacmanWrapper::Yay => ("yay -R", false), - PacmanWrapper::Paru => ("paru -R", false), - _ => ("pacman -R", true), - }, - }; let packages_do = pkg_list.iter().map(|s| s.to_string() + " ").collect::(); - let _ = utils::run_cmd_terminal(format!("{} {}", cmd, packages_do), escalate); + if Path::new("/sbin/pamac-installer").exists() { + let arg = match install { + false => "--remove", + _ => "", + }; + Exec::shell(format!("pamac-installer {} {}", arg, packages_do)).join().unwrap(); + } else { + let (cmd, escalate) = match install { + true => match utils::get_pacman_wrapper() { + PacmanWrapper::Pak => ("pak -Sy", false), + PacmanWrapper::Yay => ("yay -Sy", false), + PacmanWrapper::Paru => ("paru -Sy", false), + _ => ("pacman -Sy", true), + }, + false => match utils::get_pacman_wrapper() { + PacmanWrapper::Pak => ("pak -R", false), + PacmanWrapper::Yay => ("yay -R", false), + PacmanWrapper::Paru => ("paru -R", false), + _ => ("pacman -R", true), + }, + }; + let _ = utils::run_cmd_terminal(format!("{} {}", cmd, packages_do), escalate); + } + match install { true => self.app_installed(&pkg_list[0]), false => !self.app_installed(&pkg_list[0]), diff --git a/src/utils.rs b/src/utils.rs index 43676f9..a2045a0 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -10,7 +10,6 @@ pub enum PacmanWrapper { Pak, Yay, Paru, - Pamac, Pacman, } @@ -106,21 +105,6 @@ pub fn get_pacman_wrapper() -> PacmanWrapper { PacmanWrapper::Pacman } -#[inline] -pub fn get_pacman_wrapper_gui() -> PacmanWrapper { - if Path::new("/sbin/pamac-installer").exists() { - return PacmanWrapper::Pamac; - } else if Path::new("/sbin/pak").exists() { - return PacmanWrapper::Pak; - } else if Path::new("/sbin/yay").exists() { - return PacmanWrapper::Yay; - } else if Path::new("/sbin/paru").exists() { - return PacmanWrapper::Paru; - } - - PacmanWrapper::Pacman -} - #[cfg(test)] mod test { use super::*;