diff --git a/crates/pacdef_core/Cargo.toml b/crates/pacdef_core/Cargo.toml index 28f9f4b..59445d5 100644 --- a/crates/pacdef_core/Cargo.toml +++ b/crates/pacdef_core/Cargo.toml @@ -13,7 +13,7 @@ categories = ["command-line-utilities"] features = ["alpm/docs-rs"] [dependencies] -alpm = "2.2" +alpm = { version = "2.2", optional = true } anyhow = { workspace = true } clap = "4.1" const_format = { version = "0.2", default-features = false } @@ -27,3 +27,7 @@ serde_derive = "1.0" serde = "1.0" pacdef_macros = { path = "../pacdef_macros", version = "0.1" } + +[features] +default = ["arch"] +arch = ["dep:alpm"] diff --git a/crates/pacdef_core/src/backend/actual/mod.rs b/crates/pacdef_core/src/backend/actual/mod.rs index 1c24472..e8bd3ad 100644 --- a/crates/pacdef_core/src/backend/actual/mod.rs +++ b/crates/pacdef_core/src/backend/actual/mod.rs @@ -1,2 +1,3 @@ +#[cfg(feature = "arch")] pub mod arch; pub mod rust; diff --git a/crates/pacdef_core/src/backend/mod.rs b/crates/pacdef_core/src/backend/mod.rs index 7589743..2aed837 100644 --- a/crates/pacdef_core/src/backend/mod.rs +++ b/crates/pacdef_core/src/backend/mod.rs @@ -12,6 +12,7 @@ use pacdef_macros::Register; #[derive(Debug, Register)] pub enum Backends { + #[cfg(feature = "arch")] Arch, Rust, } diff --git a/crates/pacdef_core/src/core.rs b/crates/pacdef_core/src/core.rs index ecdc4cb..204f81c 100644 --- a/crates/pacdef_core/src/core.rs +++ b/crates/pacdef_core/src/core.rs @@ -9,7 +9,7 @@ use const_format::formatcp; use crate::action::*; use crate::args; -use crate::backend::{Arch, Backend, Backends, ToDoPerBackend}; +use crate::backend::{Backend, Backends, ToDoPerBackend}; use crate::cmd::run_edit_command; use crate::env::get_single_var; use crate::path::get_group_dir; @@ -23,6 +23,7 @@ const UNREACHABLE_ARM: &str = "argument parser requires some subcommand to retur const ACTION_NOT_MATCHED: &str = "could not match action"; /// Most data that is required during runtime of the program. +#[allow(dead_code)] // "`config` is only needed on Arch Linux" pub struct Pacdef { args: ArgMatches, config: Config, @@ -94,6 +95,7 @@ impl Pacdef { let mut to_install = ToDoPerBackend::new(); for mut backend in Backends::iter() { + #[cfg(feature = "arch")] self.overwrite_values_from_config(&mut *backend); backend.load(&self.groups); @@ -107,8 +109,9 @@ impl Pacdef { to_install } + #[cfg(feature = "arch")] fn overwrite_values_from_config(&mut self, backend: &mut dyn Backend) { - if let Some(arch) = backend.as_any_mut().downcast_mut::() { + if let Some(arch) = backend.as_any_mut().downcast_mut::() { arch.binary = self.config.aur_helper.clone(); arch.aur_rm_args = self.config.aur_rm_args.take(); } @@ -166,6 +169,7 @@ impl Pacdef { let mut result = ToDoPerBackend::new(); for mut backend in Backends::iter() { + #[cfg(feature = "arch")] self.overwrite_values_from_config(&mut *backend); backend.load(&self.groups);