diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-10-13 19:57:37 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-10-13 19:57:44 +0200 |
commit | a4815d55a56d3c842f22dd3648033f58943769c7 (patch) | |
tree | fd9968efb52687ed5eeb377b1cfca966e148af8f /src/package/util.rs | |
parent | d99006bfb1992b67af6360345befbc1137b19b50 (diff) |
Split files for more structure
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/package/util.rs')
-rw-r--r-- | src/package/util.rs | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/src/package/util.rs b/src/package/util.rs index c8a2975..e69de29 100644 --- a/src/package/util.rs +++ b/src/package/util.rs @@ -1,132 +0,0 @@ -//! Utility types for the package definitions -//! -//! These types exist only for the purpose of strong typing -//! and cannot do anything special. - -use std::result::Result as RResult; -use std::ops::Deref; - -use serde::Deserialize; -use anyhow::Result; - -#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] -#[serde(transparent)] -pub struct PackageName(String); - -impl Deref for PackageName { - type Target = String; - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl From<String> for PackageName { - fn from(s: String) -> Self { - PackageName(s) - } -} - -impl std::fmt::Display for PackageName { - fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - self.0.fmt(f) - } -} - -#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] -#[serde(transparent)] -pub struct PackageVersion(String); - -impl From<String> for PackageVersion { - fn from(s: String) -> Self { - PackageVersion(s) - } -} - -#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] -#[serde(transparent)] -pub struct SystemDependency(String); - -#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] -#[serde(transparent)] -pub struct BuildDependency(String); - -#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)] -#[serde(transparent)] -pub struct Dependency(String); - -impl std::convert::TryInto<(PackageName, PackageVersionConstraint)> for Dependency { - type Error = anyhow::Error; - - fn try_into(self) -> RResult<(PackageName, PackageVersionConstraint), Self::Error> { - // TODO: Implement properly - let v: Vec<_> = self.0.split("-").collect(); - Ok((PackageName::from(String::from(v[0])), PackageVersionConstraint::Any)) - } -} - -#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq)] -#[serde(transparent)] -pub struct HashValue(String); - - -/// A type which can be used to express a package version constraint -// TODO: Remove allow(unused) -#[derive(Debug, Eq, PartialEq)] -#[allow(unused)] -pub enum PackageVersionConstraint { - Any, - Latest, - LowerAs(PackageVersion), - HigherAs(PackageVersion), - InRange(PackageVersion, PackageVersion), - Exact(PackageVersion), -} - -impl PackageVersionConstraint { - pub fn matches(&self, v: &PackageVersion) -> Result<PackageVersionMatch> { - match self { - PackageVersionConstraint::Any => Ok(PackageVersionMatch::True), - PackageVersionConstraint::Latest => Ok(PackageVersionMatch::Undecided), - PackageVersionConstraint::LowerAs(_vers) => Ok(PackageVersionMatch::Undecided), // TODO: Fix implementation - PackageVersionConstraint::HigherAs(_vers) => Ok(PackageVersionMatch::Undecided), // TODO: Fix implementation - PackageVersionConstraint::InRange(_vers1, _vers2) => Ok(PackageVersionMatch::Undecided), // TODO: Fix implementation - PackageVersionConstraint::Exact(vers) => Ok(PackageVersionMatch::from(*v == *vers)), - } - } -} - -#[derive(Debug, Clone, Copy, Eq, PartialEq)] -pub enum PackageVersionMatch { - True, - False, - Undecided, -} - -impl PackageVersionMatch { - // TODO: Remove allow(unused) - #[allow(unused)] - pub fn is_true(&self) -> bool { - *self == PackageVersionMatch::True - } - - pub fn is_false(&self) -> bool { - *self == PackageVersionMatch::False - } - - // TODO: Remove allow(unused) - #[allow(unused)] - pub fn is_undecided(&self) -> bool { - *self == PackageVersionMatch::Undecided - } -} - -impl From<bool> for PackageVersionMatch { - fn from(b: bool) -> Self { - if b { - PackageVersionMatch::True - } else { - PackageVersionMatch::False - } - } -} - |