linuxkit_utils/manifest/
mod.rs

1use ::serde_yaml::Value as JsValue;
2
3mod kernel_spec;
4pub use kernel_spec::KernelSpec;
5
6mod init_entry;
7pub use init_entry::InitEntry;
8
9mod exec_entry;
10pub use exec_entry::ExecEntry;
11
12mod file_entry;
13pub use file_entry::FileEntry;
14
15use crate::EnvSubst;
16
17#[derive(Debug, Clone, PartialEq, ::serde::Serialize, ::serde::Deserialize)]
18pub struct Manifest {
19    #[serde(rename = "kernel")]
20    pub kernel: KernelSpec,
21
22    #[serde(rename = "init")]
23    pub init: Vec<InitEntry>,
24
25    #[serde(rename = "onboot")]
26    pub on_boot: Vec<ExecEntry>,
27
28    #[serde(rename = "onshutdown")]
29    pub on_shutdown: Vec<ExecEntry>,
30
31    #[serde(rename = "services")]
32    pub services: Vec<ExecEntry>,
33
34    #[serde(rename = "files")]
35    pub files: Vec<FileEntry>,
36
37    #[serde(skip_serializing_if = "Option::is_none")]
38    #[serde(rename = "trust")]
39    pub trust: Option<JsValue>,
40}
41
42impl EnvSubst for Manifest {
43    fn env_subst(
44        &self,
45        context: &std::collections::HashMap<String, String>,
46    ) -> Result<Self, envsubst::Error> {
47        let kernel = self.kernel.env_subst(context)?;
48        let init = self.init.env_subst(context)?;
49        let on_boot = self.on_boot.env_subst(context)?;
50        let on_shutdown = self.on_shutdown.env_subst(context)?;
51        let services = self.services.env_subst(context)?;
52        let files = self.files.env_subst(context)?;
53        let trust = self.trust.env_subst(context)?;
54
55        Ok(Self {
56            kernel,
57            init,
58            on_boot,
59            on_shutdown,
60            services,
61            files,
62            trust,
63        })
64    }
65}