🚧 don't launch pamac with terminal

This commit is contained in:
Vladislav Nepogodin 2022-07-08 21:20:09 +04:00
parent a7abc62247
commit 75b89db706
No known key found for this signature in database
GPG Key ID: B62C3D10C54D5DA9
2 changed files with 26 additions and 33 deletions

View File

@ -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 packages_do = pkg_list.iter().map(|s| s.to_string() + " ").collect::<String>();
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_gui() {
PacmanWrapper::Pamac => ("pamac-installer", false),
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_gui() {
PacmanWrapper::Pamac => ("pamac-installer --remove", false),
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 packages_do = pkg_list.iter().map(|s| s.to_string() + " ").collect::<String>();
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]),

View File

@ -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::*;