//! The git side: repository visibility and kind, issue state, build state. use super::str_enum::impl_str_enum; use serde::{Deserialize, Serialize}; // --- Git repository visibility --- #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "lowercase")] pub enum Visibility { Public, Unlisted, Private, } impl_str_enum!(Visibility { Public => "public", Unlisted => "unlisted", Private => "private", }); // --- Git repository kind --- /// What a repository is for. /// /// `Source` is every repository a creator makes. `Annotations` is the one /// per-account repository holding nothing but `refs/notes/*`, which is private /// permanently. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "lowercase")] pub enum GitRepoKind { Source, Annotations, } impl_str_enum!(GitRepoKind { Source => "source", Annotations => "annotations", }); // --- Git Issues --- #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "lowercase")] pub enum IssueStatus { Open, Closed, } impl_str_enum!(IssueStatus { Open => "open", Closed => "closed", }); // --- Build Pipeline --- #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum BuildStatus { Pending, Running, Succeeded, Failed, Cancelled, } impl_str_enum!(BuildStatus { Pending => "pending", Running => "running", Succeeded => "succeeded", Failed => "failed", Cancelled => "cancelled", });