cuenv_core/
ci.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
4#[serde(rename_all = "camelCase")]
5pub struct PipelineCondition {
6    pub pull_request: Option<bool>,
7    #[serde(default)]
8    pub branch: Option<StringOrVec>,
9    #[serde(default)]
10    pub tag: Option<StringOrVec>,
11    pub default_branch: Option<bool>,
12    pub scheduled: Option<bool>,
13    pub manual: Option<bool>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
17pub struct Pipeline {
18    pub name: String,
19    pub when: Option<PipelineCondition>,
20    pub tasks: Vec<String>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
24pub struct CI {
25    pub pipelines: Vec<Pipeline>,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
29#[serde(untagged)]
30pub enum StringOrVec {
31    String(String),
32    Vec(Vec<String>),
33}