Allow having only one env conversion (#548)

Allows setting only `from_string` or `to_string` in `env_conversions`
config. Previously, both were required.
This commit is contained in:
Jakub Žádník
2021-12-22 00:32:38 +02:00
committed by GitHub
parent 52dba91e1a
commit deeb1da359
4 changed files with 75 additions and 70 deletions

View File

@ -6,8 +6,8 @@ const ANIMATE_PROMPT_DEFAULT: bool = false;
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct EnvConversion {
pub from_string: (BlockId, Span),
pub to_string: (BlockId, Span),
pub from_string: Option<(BlockId, Span)>,
pub to_string: Option<(BlockId, Span)>,
}
impl EnvConversion {
@ -28,20 +28,13 @@ impl EnvConversion {
}
}
match (conv_map.get("from_string"), conv_map.get("to_string")) {
(None, _) => Err(ShellError::MissingConfigValue(
"'from_string' field".into(),
value.span()?,
)),
(_, None) => Err(ShellError::MissingConfigValue(
"'to_string' field".into(),
value.span()?,
)),
(Some(from), Some(to)) => Ok(EnvConversion {
from_string: *from,
to_string: *to,
}),
}
let from_string = conv_map.get("from_string").cloned();
let to_string = conv_map.get("to_string").cloned();
Ok(EnvConversion {
from_string,
to_string,
})
}
}
@ -177,6 +170,7 @@ impl Value {
let mut env_conversions = HashMap::new();
for (env_var, record) in env_vars.iter().zip(conversions) {
// println!("{}: {:?}", env_var, record);
env_conversions.insert(env_var.into(), EnvConversion::from_record(record)?);
}