support_kit/deployments/
deployment_config.rs1use 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}