cuenv_core/
ci.rs

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