35 add support for aura aur helper (#63)
* Adds Archlinux Aura Package Manager support * Added config support * Fixes/adds config for aura * changes aura arguments * Let Aura only use sudo * Corrects wrong order of commands
This commit is contained in:
@@ -70,10 +70,12 @@
|
|||||||
#autoremove = true
|
#autoremove = true
|
||||||
|
|
||||||
[linux]
|
[linux]
|
||||||
# Arch Package Manager to use. Allowed values: autodetect, trizen, paru, yay, pikaur, pacman, pamac.
|
# Arch Package Manager to use. Allowed values: autodetect, trizen, aura, paru, yay, pikaur, pacman, pamac.
|
||||||
#arch_package_manager = "pacman"
|
#arch_package_manager = "pacman"
|
||||||
# Arguments to pass yay (or paru) when updating packages
|
# Arguments to pass yay (or paru) when updating packages
|
||||||
#yay_arguments = "--nodevel"
|
#yay_arguments = "--nodevel"
|
||||||
|
#aura_aur_arguments = "-kx"
|
||||||
|
#aura_pacman_arguments = ""
|
||||||
#show_arch_news = true
|
#show_arch_news = true
|
||||||
#trizen_arguments = "--devel"
|
#trizen_arguments = "--devel"
|
||||||
#pikaur_arguments = ""
|
#pikaur_arguments = ""
|
||||||
|
|||||||
@@ -216,12 +216,15 @@ pub enum ArchPackageManager {
|
|||||||
Pacman,
|
Pacman,
|
||||||
Pikaur,
|
Pikaur,
|
||||||
Pamac,
|
Pamac,
|
||||||
|
Aura,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Default, Debug)]
|
#[derive(Deserialize, Default, Debug)]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
pub struct Linux {
|
pub struct Linux {
|
||||||
yay_arguments: Option<String>,
|
yay_arguments: Option<String>,
|
||||||
|
aura_aur_arguments: Option<String>,
|
||||||
|
aura_pacman_arguments: Option<String>,
|
||||||
arch_package_manager: Option<ArchPackageManager>,
|
arch_package_manager: Option<ArchPackageManager>,
|
||||||
show_arch_news: Option<bool>,
|
show_arch_news: Option<bool>,
|
||||||
trizen_arguments: Option<String>,
|
trizen_arguments: Option<String>,
|
||||||
@@ -268,6 +271,8 @@ pub struct ConfigFile {
|
|||||||
display_time: Option<bool>,
|
display_time: Option<bool>,
|
||||||
assume_yes: Option<bool>,
|
assume_yes: Option<bool>,
|
||||||
yay_arguments: Option<String>,
|
yay_arguments: Option<String>,
|
||||||
|
aura_aur_arguments: Option<String>,
|
||||||
|
aura_pacman_arguments: Option<String>,
|
||||||
no_retry: Option<bool>,
|
no_retry: Option<bool>,
|
||||||
run_in_tmux: Option<bool>,
|
run_in_tmux: Option<bool>,
|
||||||
cleanup: Option<bool>,
|
cleanup: Option<bool>,
|
||||||
@@ -764,9 +769,27 @@ impl Config {
|
|||||||
|
|
||||||
/// Extra yay arguments
|
/// Extra yay arguments
|
||||||
pub fn yay_arguments(&self) -> &str {
|
pub fn yay_arguments(&self) -> &str {
|
||||||
get_deprecated!(self.config_file, yay_arguments, linux, yay_arguments)
|
self.config_file
|
||||||
.as_deref()
|
.linux
|
||||||
.unwrap_or("--devel")
|
.as_ref()
|
||||||
|
.and_then(|s| s.yay_arguments.as_deref())
|
||||||
|
.unwrap_or("")
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Extra aura arguments for AUR and pacman
|
||||||
|
pub fn aura_aur_arguments(&self) -> &str {
|
||||||
|
self.config_file
|
||||||
|
.linux
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|s| s.aura_aur_arguments.as_deref())
|
||||||
|
.unwrap_or("")
|
||||||
|
}
|
||||||
|
pub fn aura_pacman_arguments(&self) -> &str {
|
||||||
|
self.config_file
|
||||||
|
.linux
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|s| s.aura_pacman_arguments.as_deref())
|
||||||
|
.unwrap_or("")
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extra apt arguments
|
/// Extra apt arguments
|
||||||
|
|||||||
@@ -229,6 +229,53 @@ impl ArchPackageManager for Pamac {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct Aura {
|
||||||
|
executable: PathBuf,
|
||||||
|
sudo: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Aura {
|
||||||
|
fn get(ctx: &ExecutionContext) -> Option<Self> {
|
||||||
|
Some(Self {
|
||||||
|
executable: which("aura")?,
|
||||||
|
sudo: ctx.sudo().to_owned()?,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ArchPackageManager for Aura {
|
||||||
|
fn upgrade(&self, ctx: &ExecutionContext) -> Result<()> {
|
||||||
|
let sudo = which("sudo").unwrap_or(PathBuf::new());
|
||||||
|
let mut aur_update = ctx.run_type().execute(&sudo);
|
||||||
|
|
||||||
|
if sudo.ends_with("sudo") {
|
||||||
|
aur_update
|
||||||
|
.arg(&self.executable)
|
||||||
|
.arg("-Au")
|
||||||
|
.args(ctx.config().aura_aur_arguments().split_whitespace());
|
||||||
|
if ctx.config().yes(Step::System) {
|
||||||
|
aur_update.arg("--noconfirm");
|
||||||
|
}
|
||||||
|
|
||||||
|
aur_update.check_run()?;
|
||||||
|
} else {
|
||||||
|
println!("Aura requires sudo installed to work with AUR packages")
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut pacman_update = ctx.run_type().execute(&self.sudo);
|
||||||
|
pacman_update
|
||||||
|
.arg(&self.executable)
|
||||||
|
.arg("-Syu")
|
||||||
|
.args(ctx.config().aura_pacman_arguments().split_whitespace());
|
||||||
|
if ctx.config().yes(Step::System) {
|
||||||
|
pacman_update.arg("--noconfirm");
|
||||||
|
}
|
||||||
|
pacman_update.check_run()?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn box_package_manager<P: 'static + ArchPackageManager>(package_manager: P) -> Box<dyn ArchPackageManager> {
|
fn box_package_manager<P: 'static + ArchPackageManager>(package_manager: P) -> Box<dyn ArchPackageManager> {
|
||||||
Box::new(package_manager) as Box<dyn ArchPackageManager>
|
Box::new(package_manager) as Box<dyn ArchPackageManager>
|
||||||
}
|
}
|
||||||
@@ -243,13 +290,15 @@ pub fn get_arch_package_manager(ctx: &ExecutionContext) -> Option<Box<dyn ArchPa
|
|||||||
.or_else(|| Trizen::get().map(box_package_manager))
|
.or_else(|| Trizen::get().map(box_package_manager))
|
||||||
.or_else(|| Pikaur::get().map(box_package_manager))
|
.or_else(|| Pikaur::get().map(box_package_manager))
|
||||||
.or_else(|| Pamac::get().map(box_package_manager))
|
.or_else(|| Pamac::get().map(box_package_manager))
|
||||||
.or_else(|| Pacman::get(ctx).map(box_package_manager)),
|
.or_else(|| Pacman::get(ctx).map(box_package_manager))
|
||||||
|
.or_else(|| Aura::get(ctx).map(box_package_manager)),
|
||||||
config::ArchPackageManager::Trizen => Trizen::get().map(box_package_manager),
|
config::ArchPackageManager::Trizen => Trizen::get().map(box_package_manager),
|
||||||
config::ArchPackageManager::Paru => YayParu::get("paru", &pacman).map(box_package_manager),
|
config::ArchPackageManager::Paru => YayParu::get("paru", &pacman).map(box_package_manager),
|
||||||
config::ArchPackageManager::Yay => YayParu::get("yay", &pacman).map(box_package_manager),
|
config::ArchPackageManager::Yay => YayParu::get("yay", &pacman).map(box_package_manager),
|
||||||
config::ArchPackageManager::Pacman => Pacman::get(ctx).map(box_package_manager),
|
config::ArchPackageManager::Pacman => Pacman::get(ctx).map(box_package_manager),
|
||||||
config::ArchPackageManager::Pikaur => Pikaur::get().map(box_package_manager),
|
config::ArchPackageManager::Pikaur => Pikaur::get().map(box_package_manager),
|
||||||
config::ArchPackageManager::Pamac => Pamac::get().map(box_package_manager),
|
config::ArchPackageManager::Pamac => Pamac::get().map(box_package_manager),
|
||||||
|
config::ArchPackageManager::Aura => Aura::get(ctx).map(box_package_manager),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user