summaryrefslogtreecommitdiffstats
path: root/crates/common/src/types.rs
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-10-24 22:40:08 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-10-24 23:58:03 +0200
commita1a185370da27f2cc3df84d3a8d7141f9ce7db16 (patch)
tree6904f6f0549e89d160cbe635713e2864df25c21a /crates/common/src/types.rs
parent524985f9449eb2f3a1d01b5f88dc74123d40c43a (diff)
downloadrebel-a1a185370da27f2cc3df84d3a8d7141f9ce7db16.tar
rebel-a1a185370da27f2cc3df84d3a8d7141f9ce7db16.zip
Split defintions used by both runner and executor into separate crate
Also get rid of the Runner trait - different runner implementations do not make sense with our current design.
Diffstat (limited to 'crates/common/src/types.rs')
-rw-r--r--crates/common/src/types.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/crates/common/src/types.rs b/crates/common/src/types.rs
new file mode 100644
index 0000000..51f9209
--- /dev/null
+++ b/crates/common/src/types.rs
@@ -0,0 +1,43 @@
+use std::{
+ collections::{HashMap, HashSet},
+ fmt::Display,
+};
+
+use serde::{Deserialize, Serialize};
+
+use crate::string_hash::*;
+
+#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, Hash)]
+pub struct TaskID {
+ pub recipe: String,
+ pub task: String,
+}
+
+impl Display for TaskID {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{}:{}", self.recipe, self.task)
+ }
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, Hash)]
+#[serde(rename_all = "snake_case")]
+pub enum Dependency {
+ Fetch { name: String, sha256: StringHash },
+ Task { output: ArchiveHash, path: String },
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct Task {
+ pub label: String,
+ pub command: String,
+ pub inherit: Vec<LayerHash>,
+ pub depends: HashSet<Dependency>,
+ pub outputs: HashMap<String, String>,
+}
+
+#[derive(Clone, Debug, Deserialize, Serialize)]
+pub struct TaskOutput {
+ pub input_hash: InputHash,
+ pub layer: Option<LayerHash>,
+ pub outputs: HashMap<String, ArchiveHash>,
+}