summaryrefslogtreecommitdiffstats
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
parentd99006bfb1992b67af6360345befbc1137b19b50 (diff)
Split files for more structure
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--src/package/dependency.rs29
-rw-r--r--src/package/mod.rs19
-rw-r--r--src/package/name.rs25
-rw-r--r--src/package/package.rs35
-rw-r--r--src/package/source.rs37
-rw-r--r--src/package/util.rs132
-rw-r--r--src/package/version.rs74
7 files changed, 184 insertions, 167 deletions
diff --git a/src/package/dependency.rs b/src/package/dependency.rs
new file mode 100644
index 0000000..da3ac3a
--- /dev/null
+++ b/src/package/dependency.rs
@@ -0,0 +1,29 @@
+use std::result::Result as RResult;
+use serde::Deserialize;
+
+use crate::package::PackageName;
+use crate::package::PackageVersionConstraint;
+
+
+#[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))
+ }
+}
+
diff --git a/src/package/mod.rs b/src/package/mod.rs
index d2ef5f1..371a556 100644
--- a/src/package/mod.rs
+++ b/src/package/mod.rs
@@ -1,9 +1,20 @@
-mod package;
+//! Module that contains all types and functionality that has to do with a package.
+
+mod dependency;
+pub use dependency::*;
+
+mod name;
+pub use name::*;
+
+mod package;
pub use package::*;
-mod util;
-pub use util::*;
+mod source;
+pub use source::*;
-mod tree;
+mod tree;
pub use tree::*;
+mod version;
+pub use version::*;
+
diff --git a/src/package/name.rs b/src/package/name.rs
new file mode 100644
index 0000000..f42c827
--- /dev/null
+++ b/src/package/name.rs
@@ -0,0 +1,25 @@
+use std::ops::Deref;
+use serde::Deserialize;
+
+#[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)
+ }
+}
diff --git a/src/package/package.rs b/src/package/package.rs
index 230211b..af4c4e3 100644
--- a/src/package/package.rs
+++ b/src/package/package.rs
@@ -1,7 +1,6 @@
use std::path::PathBuf;
use std::collections::HashMap;
-use url::Url;
use getset::Getters;
use serde::Deserialize;
use anyhow::Result;
@@ -9,7 +8,10 @@ use anyhow::Error;
use resiter::AndThen;
use crate::phase::{PhaseName, Phase};
-use crate::package::util::*;
+use crate::package::dependency::*;
+use crate::package::source::*;
+use crate::package::name::*;
+use crate::package::version::*;
use crate::util::docker::ImageName;
use crate::util::executor::Executor;
@@ -100,35 +102,6 @@ impl Eq for Package {
}
-#[derive(Clone, Debug, Deserialize, Getters)]
-pub struct Source {
- #[getset(get = "pub")]
- url: Url,
- #[getset(get = "pub")]
- hash: SourceHash,
-}
-
-#[derive(Clone, Debug, Deserialize)]
-pub struct SourceHash {
- #[serde(rename = "type")]
- hashtype: HashType,
-
- #[serde(rename = "hash")]
- value: HashValue,
-}
-
-#[derive(Clone, Debug, Deserialize)]
-pub enum HashType {
- #[serde(rename = "sha1")]
- Sha1,
-
- #[serde(rename = "sha256")]
- Sha256,
-
- #[serde(rename = "sha512")]
- Sha512,
-}
-
#[derive(Clone, Debug, Deserialize)]
pub struct PackageFlags {
build_parallel: bool,
diff --git a/src/package/source.rs b/src/package/source.rs
new file mode 100644
index 0000000..8d69835
--- /dev/null
+++ b/src/package/source.rs
@@ -0,0 +1,37 @@
+use url::Url;
+use serde::Deserialize;
+use getset::Getters;
+
+#[derive(Clone, Debug, Deserialize, Getters)]
+pub struct Source {
+ #[getset(get = "pub")]
+ url: Url,
+ #[getset(get = "pub")]
+ hash: SourceHash,
+}
+
+#[derive(Clone, Debug, Deserialize)]
+pub struct SourceHash {
+ #[serde(rename = "type")]
+ hashtype: HashType,
+
+ #[serde(rename = "hash")]
+ value: HashValue,
+}
+
+#[derive(Clone, Debug, Deserialize)]
+pub enum HashType {
+ #[serde(rename = "sha1")]
+ Sha1,
+
+ #[serde(rename = "sha256")]
+ Sha256,
+
+ #[serde(rename = "sha512")]
+ Sha512,
+}
+
+#[derive(Deserialize, Clone, Debug, Hash, Eq, PartialEq)]
+#[serde(transparent)]
+pub struct HashValue(String);
+
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
- }
- }
-}
-
diff --git a/src/package/version.rs b/src/package/version.rs
new file mode 100644
index 0000000..d6c385d
--- /dev/null
+++ b/src/package/version.rs
@@ -0,0 +1,74 @@
+use serde::Deserialize;
+use anyhow::Result;
+
+#[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)
+ }
+}
+
+/// 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
+ }
+ }
+}
+