diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-10-05 09:45:53 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-10-12 15:19:13 +0200 |
commit | ab480d068681ee1a6313943a02877a17441494b8 (patch) | |
tree | 88ed07f4df0389e33619a7ed8d5a2f21955806e9 /src/package/package.rs | |
parent | 362f80c88234f25de50ca07718ee92a37cd9900c (diff) |
Make Package type more powerful
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/package/package.rs')
-rw-r--r-- | src/package/package.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/package/package.rs b/src/package/package.rs index ff5cdd9..7cb8bde 100644 --- a/src/package/package.rs +++ b/src/package/package.rs @@ -4,6 +4,7 @@ use std::collections::HashMap; use url::Url; use getset::Getters; use serde::Deserialize; +use anyhow::Result; use crate::phase::{PhaseName, Phase}; use crate::package::util::*; @@ -67,6 +68,42 @@ pub struct Package { phases: Option<HashMap<PhaseName, Phase>>, } +impl Package { + /// Get all dependencies of the package + /// + /// Either return the list of dependencies or, if available, run the dependencies_script to + /// read the dependencies from there. + pub fn get_all_dependencies(&self) -> Result<Vec<(PackageName, PackageVersionConstraint)>> { + use std::convert::TryInto; + + // TODO: Current implementation does not run dependency script + // + + self.dependencies.iter().map(|d| d.clone().try_into()).collect() + } +} + +impl PartialEq for Package { + fn eq(&self, other: &Package) -> bool { + (self.name(), self.version()).eq(&(other.name(), other.version())) + } +} + +impl PartialOrd for Package { + fn partial_cmp(&self, other: &Package) -> Option<std::cmp::Ordering> { + (self.name(), self.version()).partial_cmp(&(other.name(), other.version())) + } +} + +impl Ord for Package { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + (self.name(), self.version()).cmp(&(other.name(), other.version())) + } +} + +impl Eq for Package { +} + #[derive(Debug, Deserialize)] pub struct SourceHash { #[serde(rename = "type")] |