quanttide_devops/contract/
platform.rs1use serde::{Deserialize, Serialize};
2use std::fmt;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "snake_case")]
9pub struct Platform {
10 #[serde(default)]
11 pub source_control: SourceControl,
12 #[serde(default)]
13 pub pipeline: Pipeline,
14 #[serde(default)]
15 pub artifact_registry: Registry,
16}
17
18impl Default for Platform {
19 fn default() -> Self {
20 Self {
21 source_control: SourceControl::Github,
22 pipeline: Pipeline::GithubActions,
23 artifact_registry: Registry::None,
24 }
25 }
26}
27
28#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
30#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
31#[serde(rename_all = "snake_case")]
32pub enum SourceControl {
33 #[default]
34 Github,
35 Gitlab,
36 Gitee,
37}
38
39#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
41#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
42#[serde(rename_all = "snake_case")]
43pub enum Pipeline {
44 #[default]
45 #[serde(rename = "github_actions")]
46 GithubActions,
47 #[serde(rename = "gitlab_ci")]
48 GitlabCi,
49 Jenkins,
50}
51
52#[derive(Debug, Clone, PartialEq, Default, Serialize, Deserialize)]
56#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
57#[serde(rename_all = "snake_case")]
58pub enum Registry {
59 Crates,
60 #[serde(rename = "pypi")]
61 PyPI,
62 #[serde(rename = "pubdev")]
63 PubDev,
64 Npm,
65 #[serde(rename = "github_releases")]
66 GitHubReleases,
67 Docker,
68 #[default]
69 #[serde(other)]
70 None,
71}
72
73impl fmt::Display for Registry {
74 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
75 match self {
76 Self::Crates => write!(f, "crates.io"),
77 Self::PyPI => write!(f, "PyPI"),
78 Self::PubDev => write!(f, "pub.dev"),
79 Self::Npm => write!(f, "npm"),
80 Self::GitHubReleases => write!(f, "GitHub Releases"),
81 Self::Docker => write!(f, "Docker"),
82 Self::None => write!(f, "(none)"),
83 }
84 }
85}