👷 use best available pacman wrapper(also gui)
This commit is contained in:
parent
325075a6b3
commit
1bef9e2086
|
@ -1,4 +1,5 @@
|
||||||
use crate::utils;
|
use crate::utils;
|
||||||
|
use crate::utils::PacmanWrapper;
|
||||||
|
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
@ -74,15 +75,28 @@ impl AlpmHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn install_apps(&self, pkg_list: &Vec<String>, install: bool) -> bool {
|
fn install_apps(&self, pkg_list: &Vec<String>, install: bool) -> bool {
|
||||||
let mut install_arg: &str = "-Sy";
|
|
||||||
if pkg_list.is_empty() {
|
if pkg_list.is_empty() {
|
||||||
return false;
|
return false;
|
||||||
} else if !install {
|
|
||||||
install_arg = "-R";
|
|
||||||
}
|
}
|
||||||
|
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::<String>();
|
let packages_do = pkg_list.iter().map(|s| s.to_string() + " ").collect::<String>();
|
||||||
let _ = utils::run_cmd_terminal(format!("pacman {} {}", install_arg, packages_do), true);
|
let _ = utils::run_cmd_terminal(format!("{} {}", cmd, packages_do), escalate);
|
||||||
match install {
|
match install {
|
||||||
true => self.app_installed(&pkg_list[0]),
|
true => self.app_installed(&pkg_list[0]),
|
||||||
false => !self.app_installed(&pkg_list[0]),
|
false => !self.app_installed(&pkg_list[0]),
|
||||||
|
|
16
src/utils.rs
16
src/utils.rs
|
@ -10,6 +10,7 @@ pub enum PacmanWrapper {
|
||||||
Pak,
|
Pak,
|
||||||
Yay,
|
Yay,
|
||||||
Paru,
|
Paru,
|
||||||
|
Pamac,
|
||||||
Pacman,
|
Pacman,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,6 +106,21 @@ pub fn get_pacman_wrapper() -> PacmanWrapper {
|
||||||
PacmanWrapper::Pacman
|
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)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
Loading…
Reference in New Issue