Skip to main content

airup_sdk/files/
system_conf.rs

1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4/// Representation of Airup's system config.
5#[derive(Debug, Default, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "kebab-case")]
7pub struct SystemConf {
8    #[serde(default)]
9    pub system: System,
10
11    #[serde(default)]
12    pub env: Env,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
16#[serde(rename_all = "kebab-case")]
17pub struct System {
18    #[serde(default = "default_os_name")]
19    pub os_name: String,
20
21    #[serde(default = "default_reboot_timeout")]
22    pub reboot_timeout: u32,
23
24    #[serde(default)]
25    pub instance_name: String,
26}
27impl Default for System {
28    fn default() -> Self {
29        Self {
30            os_name: default_os_name(),
31            reboot_timeout: default_reboot_timeout(),
32            instance_name: String::new(),
33        }
34    }
35}
36
37/// Represents to Airup's environment.
38#[derive(Debug, Clone, Default, Serialize, Deserialize)]
39pub struct Env {
40    /// Table of initial environment variables.
41    ///
42    /// If a value is set to `null`, the environment variable gets removed if it exists.
43    #[serde(default)]
44    pub vars: HashMap<String, toml::Value>,
45}
46
47fn default_os_name() -> String {
48    crate::build::manifest().os_name.clone()
49}
50
51fn default_reboot_timeout() -> u32 {
52    1200000
53}