aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGalen Guyer <galen@galenguyer.com>2023-01-14 11:04:38 -0500
committerGalen Guyer <galen@galenguyer.com>2023-01-14 11:04:38 -0500
commitb31143d7a0f6f3fd956e49eb4c3fe80699fe001b (patch)
tree2405a29482baf65cd66d268c70f0fe83eab19501
parentc99bfa0addb9aa11bdaa3c228127b590430047d4 (diff)
resolve aur-provided dependency libraries as well
-rw-r--r--src/lib.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 846fe0b..1db996f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -14,6 +14,8 @@ pub struct PackageMeta {
pub version: String,
#[serde(alias = "Description")]
pub description: Option<String>,
+ #[serde(alias = "Provides")]
+ pub provides: Option<Vec<String>>,
#[serde(alias = "Popularity")]
pub popularity: f64,
#[serde(alias = "Depends")]
@@ -22,6 +24,8 @@ pub struct PackageMeta {
pub make_depends: Option<Vec<String>>,
#[serde(alias = "CheckDepends")]
pub check_depends: Option<Vec<String>>,
+ #[serde(alias = "OptDepends")]
+ pub opt_depends: Option<Vec<String>>,
}
#[derive(Debug)]
@@ -92,6 +96,11 @@ impl PackageMeta {
dependencies.push(resolve_dep(dep, alpm, aur));
}
}
+ if let Some(depends) = &self.opt_depends {
+ for dep in depends {
+ dependencies.push(resolve_dep(dep, alpm, aur));
+ }
+ }
dependencies
}
@@ -102,7 +111,9 @@ fn resolve_dep(dep: &str, alpm: &Alpm, aur: &[PackageMeta]) -> Dependency {
match dependency {
Some(d) => Dependency::Official(d.name().to_string()),
None => {
- let aur_package = aur.iter().find(|p| p.name == dep);
+ let aur_package = aur.iter().find(|p| {
+ p.name == dep || (p.provides.is_some() && p.provides.as_ref().unwrap().contains(&dep.to_owned()))
+ });
match aur_package {
Some(p) => Dependency::AUR(p.clone()),
None => Dependency::NotFound(dep.to_string()),