quanttide_devops/contract/
stage.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "snake_case")]
10pub struct Stage {
11 #[serde(default)]
12 pub build: StageBuild,
13 #[serde(default)]
14 pub test: StageTest,
15 #[serde(default)]
16 pub release: StageRelease,
17}
18
19impl Default for Stage {
20 fn default() -> Self {
21 Self {
22 build: StageBuild { command: None },
23 test: StageTest {
24 command: None,
25 threshold: 70.0,
26 },
27 release: StageRelease {
28 changelog: "CHANGELOG.md".into(),
29 pre_publish: Vec::new(),
30 },
31 }
32 }
33}
34
35#[derive(Debug, Clone, Default, Serialize, Deserialize)]
37#[serde(rename_all = "snake_case")]
38pub struct StageBuild {
39 #[serde(default)]
40 pub command: Option<String>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45#[serde(rename_all = "snake_case")]
46pub struct StageTest {
47 #[serde(default)]
48 pub command: Option<String>,
49 #[serde(default = "default_threshold")]
50 pub threshold: f64,
51}
52
53impl Default for StageTest {
54 fn default() -> Self {
55 Self {
56 command: None,
57 threshold: 70.0,
58 }
59 }
60}
61
62const fn default_threshold() -> f64 {
63 70.0
64}
65
66#[derive(Debug, Clone, Serialize, Deserialize)]
68#[serde(rename_all = "snake_case")]
69pub struct StageRelease {
70 #[serde(default = "default_changelog")]
71 pub changelog: String,
72 #[serde(default)]
73 pub pre_publish: Vec<String>,
74}
75
76fn default_changelog() -> String {
77 "CHANGELOG.md".into()
78}
79
80impl Default for StageRelease {
81 fn default() -> Self {
82 Self {
83 changelog: "CHANGELOG.md".into(),
84 pre_publish: Vec::new(),
85 }
86 }
87}