summaryrefslogtreecommitdiffstats
path: root/src/package/util.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-10-13 19:57:37 +0200
committerMatthias Beyer <mail@beyermatthias.de>2020-10-13 19:57:44 +0200
commita4815d55a56d3c842f22dd3648033f58943769c7 (patch)
treefd9968efb52687ed5eeb377b1cfca966e148af8f /src/package/util.rs
parentd99006bfb1992b67af6360345befbc1137b19b50 (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.rs132
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
- }
- }
-}
-