linuxkit_utils/env_subst/
for_jsvalue.rs1use super::*;
2
3use ::serde_yaml::Value as JsValue;
4
5impl EnvSubst for JsValue {
6 fn env_subst(&self, context: &HashMap<String, String>) -> Result<Self, SubstError> {
7 match self {
8 JsValue::Bool(_) => Ok(self.to_owned()),
9 JsValue::Null => Ok(self.to_owned()),
10 JsValue::Number(_) => Ok(self.to_owned()),
11 JsValue::String(s) => Ok(JsValue::String(s.env_subst(context)?)),
12 JsValue::Sequence(items) => Ok(JsValue::Sequence(
13 items
14 .iter()
15 .map(|item| item.env_subst(context))
16 .collect::<Result<Vec<_>, _>>()?,
17 )),
18 JsValue::Mapping(mapping) => {
19 let mapping = mapping
20 .iter()
21 .map(|(k, v)| {
22 k.env_subst(context)
23 .and_then(|k| v.env_subst(context).map(move |v| (k, v)))
24 })
25 .collect::<Result<_, _>>()?;
26 Ok(JsValue::Mapping(mapping))
27 }
28 }
29 }
30}