aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGalen Guyer <galen@galenguyer.com>2023-01-13 21:08:09 -0500
committerGalen Guyer <galen@galenguyer.com>2023-01-13 21:08:09 -0500
commit9838daa8187e138da3eeb0c317edb010c7eda67a (patch)
tree8b1c226b22b90d8abcd291f5e40a6af6c28f57f0
parenta16bdebab35742037205ca5ddb5e0e2928fa49a9 (diff)
resolve all dependencies
-rw-r--r--src/lib.rs44
1 files changed, 27 insertions, 17 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 3807a84..851cdc9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -18,6 +18,8 @@ pub struct PackageMeta {
pub depends: Option<Vec<String>>,
#[serde(alias = "MakeDepends")]
pub make_depends: Option<Vec<String>>,
+ #[serde(alias = "CheckDepends")]
+ pub check_depends: Option<Vec<String>>,
}
pub enum Dependency {
@@ -74,26 +76,34 @@ impl PackageMeta {
if let Some(depends) = &self.depends {
for dep in depends {
- let dependency = alpm.syncdbs().find_satisfier(dep.clone());
- match dependency {
- Some(d) => {
- dependencies.push(Dependency::Official(d.name().to_string()));
- }
- None => {
- let aur_package = aur.iter().find(|p| p.name == *dep);
- match aur_package {
- Some(p) => {
- dependencies.push(Dependency::AUR(p.clone()));
- }
- None => {
- dependencies.push(Dependency::NotFound(dep.clone()));
- }
- }
- }
- }
+ dependencies.push(resolve_dep(dep, alpm, aur));
+ }
+ }
+ if let Some(depends) = &self.make_depends {
+ for dep in depends {
+ dependencies.push(resolve_dep(dep, alpm, aur));
+ }
+ }
+ if let Some(depends) = &self.check_depends {
+ for dep in depends {
+ dependencies.push(resolve_dep(dep, alpm, aur));
}
}
dependencies
}
}
+
+fn resolve_dep(dep: &str, alpm: &Alpm, aur: &Vec<PackageMeta>) -> Dependency {
+ let dependency = alpm.syncdbs().find_satisfier(dep.to_string());
+ match dependency {
+ Some(d) => Dependency::Official(d.name().to_string()),
+ None => {
+ let aur_package = aur.iter().find(|p| p.name == dep);
+ match aur_package {
+ Some(p) => Dependency::AUR(p.clone()),
+ None => Dependency::NotFound(dep.to_string()),
+ }
+ }
+ }
+} \ No newline at end of file