support_kit/deployments/
deployment_config.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
4#[serde(rename_all = "kebab-case")]
5pub struct DeploymentConfig {
6    pub artifacts: Option<Artifacts>,
7    pub hosts: Vec<HostDefinition>,
8    #[serde(default)]
9    pub security: SecurityConfig,
10}
11
12#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
13#[serde(rename_all = "kebab-case")]
14pub struct Artifacts {
15    pub containers: Option<Containers>,
16}
17
18#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
19#[serde(rename_all = "kebab-case")]
20pub struct Containers {
21    pub registry: Option<Registry>,
22    pub images: Vec<ImageDefinition>,
23}
24
25#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
26#[serde(rename_all = "kebab-case")]
27pub struct Registry {
28    pub account: String,
29    pub host: String,
30    pub token: String,
31}
32
33#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
34#[serde(rename_all = "kebab-case")]
35pub struct ImageDefinition {
36    pub definition: String,
37    pub name: String,
38    pub label: String,
39    pub namespace: String,
40    pub repo: String,
41}
42
43#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
44#[serde(rename_all = "kebab-case")]
45pub struct HostDefinition {
46    pub address: String,
47    pub port: Option<u16>,
48    pub user: Option<String>,
49    pub auth: Option<String>,
50}
51
52#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
53#[serde(rename_all = "kebab-case")]
54struct Security {
55    certificates: Option<SecurityConfig>,
56}
57
58#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)]
59#[serde(tag = "type", rename_all = "kebab-case")]
60pub enum SecurityConfig {
61    Acme {
62        domains: Vec<String>,
63        emails: Vec<String>,
64        cache: Option<String>,
65        production: bool,
66    },
67    #[serde(untagged)]
68    #[default]
69    Off,
70    #[serde(untagged)]
71    Unknown(serde_json::Value),
72}