summaryrefslogtreecommitdiffstats
path: root/src/package/package.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/package/package.rs')
-rw-r--r--src/package/package.rs95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/package/package.rs b/src/package/package.rs
new file mode 100644
index 0000000..ff5cdd9
--- /dev/null
+++ b/src/package/package.rs
@@ -0,0 +1,95 @@
+use std::path::PathBuf;
+use std::collections::HashMap;
+
+use url::Url;
+use getset::Getters;
+use serde::Deserialize;
+
+use crate::phase::{PhaseName, Phase};
+use crate::package::util::*;
+use crate::util::docker::ImageName;
+
+#[derive(Debug, Deserialize, Getters)]
+pub struct Package {
+ #[getset(get = "pub")]
+ name: PackageName,
+
+ #[getset(get = "pub")]
+ version: PackageVersion,
+
+ #[getset(get = "pub")]
+ version_is_semver: bool,
+
+ #[getset(get = "pub")]
+ source_url: Url,
+
+ #[getset(get = "pub")]
+ source_hash: SourceHash,
+
+ #[getset(get = "pub")]
+ system_dependencies: Vec<SystemDependency>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ system_dependencies_script: Option<PathBuf>,
+
+ #[getset(get = "pub")]
+ build_dependencies: Vec<BuildDependency>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ build_dependencies_script: Option<PathBuf>,
+
+ #[getset(get = "pub")]
+ dependencies: Vec<Dependency>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ dependencies_script: Option<PathBuf>,
+
+ #[getset(get = "pub")]
+ patches: Vec<PathBuf>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ environment: Option<HashMap<String, String>>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ flags: Option<PackageFlags>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ deny_on_images: Option<Vec<ImageName>>,
+
+ #[getset(get = "pub")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ phases: Option<HashMap<PhaseName, Phase>>,
+}
+
+#[derive(Debug, Deserialize)]
+pub struct SourceHash {
+ #[serde(rename = "type")]
+ hashtype: HashType,
+
+ #[serde(rename = "hash")]
+ value: HashValue,
+}
+
+#[derive(Debug, Deserialize)]
+pub enum HashType {
+ #[serde(rename = "sha1")]
+ Sha1,
+
+ #[serde(rename = "sha256")]
+ Sha256,
+
+ #[serde(rename = "sha512")]
+ Sha512,
+}
+
+#[derive(Debug, Deserialize)]
+pub struct PackageFlags {
+ build_parallel: bool,
+}
+