linuxkit_utils/manifest/
mod.rs1use ::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}