Add pikaur support (#898)
This commit is contained in:
@@ -66,12 +66,13 @@
|
|||||||
#greedy_cask = true
|
#greedy_cask = true
|
||||||
|
|
||||||
[linux]
|
[linux]
|
||||||
# Arch Package Manager to use. Allowed values: autodetect, trizen, paru, yay, pacman.
|
# Arch Package Manager to use. Allowed values: autodetect, trizen, paru, yay, pikaur, pacman.
|
||||||
#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"
|
||||||
#show_arch_news = true
|
#show_arch_news = true
|
||||||
#trizen_arguments = "--devel"
|
#trizen_arguments = "--devel"
|
||||||
|
#pikaur_arguments = ""
|
||||||
#enable_tlmgr = true
|
#enable_tlmgr = true
|
||||||
#emerge_sync_flags = "-q"
|
#emerge_sync_flags = "-q"
|
||||||
#emerge_update_flags = "-uDNa --with-bdeps=y world"
|
#emerge_update_flags = "-uDNa --with-bdeps=y world"
|
||||||
|
|||||||
@@ -199,6 +199,7 @@ pub enum ArchPackageManager {
|
|||||||
Paru,
|
Paru,
|
||||||
Yay,
|
Yay,
|
||||||
Pacman,
|
Pacman,
|
||||||
|
Pikaur,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Default, Debug)]
|
#[derive(Deserialize, Default, Debug)]
|
||||||
@@ -208,6 +209,7 @@ pub struct Linux {
|
|||||||
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>,
|
||||||
|
pikaur_arguments: Option<String>,
|
||||||
dnf_arguments: Option<String>,
|
dnf_arguments: Option<String>,
|
||||||
apt_arguments: Option<String>,
|
apt_arguments: Option<String>,
|
||||||
enable_tlmgr: Option<bool>,
|
enable_tlmgr: Option<bool>,
|
||||||
@@ -677,6 +679,16 @@ impl Config {
|
|||||||
.unwrap_or("")
|
.unwrap_or("")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Extra Pikaur arguments
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub fn pikaur_arguments(&self) -> &str {
|
||||||
|
self.config_file
|
||||||
|
.linux
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|s| s.pikaur_arguments.as_deref())
|
||||||
|
.unwrap_or("")
|
||||||
|
}
|
||||||
|
|
||||||
/// Show news on Arch Linux
|
/// Show news on Arch Linux
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub fn show_arch_news(&self) -> bool {
|
pub fn show_arch_news(&self) -> bool {
|
||||||
|
|||||||
@@ -150,6 +150,46 @@ impl Pacman {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct Pikaur {
|
||||||
|
executable: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Pikaur {
|
||||||
|
fn get() -> Option<Self> {
|
||||||
|
Some(Self {
|
||||||
|
executable: which("pikaur")?,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ArchPackageManager for Pikaur {
|
||||||
|
fn upgrade(&self, ctx: &ExecutionContext) -> Result<()> {
|
||||||
|
let mut command = ctx.run_type().execute(&self.executable);
|
||||||
|
|
||||||
|
command
|
||||||
|
.arg("-Syu")
|
||||||
|
.args(ctx.config().pikaur_arguments().split_whitespace())
|
||||||
|
.env("PATH", get_execution_path());
|
||||||
|
|
||||||
|
if ctx.config().yes(Step::System) {
|
||||||
|
command.arg("--noconfirm");
|
||||||
|
}
|
||||||
|
|
||||||
|
command.check_run()?;
|
||||||
|
|
||||||
|
if ctx.config().cleanup() {
|
||||||
|
let mut command = ctx.run_type().execute(&self.executable);
|
||||||
|
command.arg("-Sc");
|
||||||
|
if ctx.config().yes(Step::System) {
|
||||||
|
command.arg("--noconfirm");
|
||||||
|
}
|
||||||
|
command.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>
|
||||||
}
|
}
|
||||||
@@ -161,15 +201,14 @@ pub fn get_arch_package_manager(ctx: &ExecutionContext) -> Option<Box<dyn ArchPa
|
|||||||
config::ArchPackageManager::Autodetect => YayParu::get("paru", &pacman)
|
config::ArchPackageManager::Autodetect => YayParu::get("paru", &pacman)
|
||||||
.map(box_package_manager)
|
.map(box_package_manager)
|
||||||
.or_else(|| YayParu::get("yay", &pacman).map(box_package_manager))
|
.or_else(|| YayParu::get("yay", &pacman).map(box_package_manager))
|
||||||
.or_else(|| {
|
.or_else(|| Trizen::get().map(box_package_manager))
|
||||||
Trizen::get()
|
.or_else(|| Pikaur::get().map(box_package_manager))
|
||||||
.map(box_package_manager)
|
.or_else(|| Pacman::get(ctx).map(box_package_manager)),
|
||||||
.or_else(|| Pacman::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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user