feat(config): add inject_vars option to matches. #856
This commit is contained in:
parent
34ba1e39e4
commit
9fb1d2a22a
|
@ -89,7 +89,7 @@ fn split_config(config: LegacyConfig) -> (LegacyInteropConfig, LegacyMatchGroup)
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|var| {
|
.filter_map(|var| {
|
||||||
let var: YAMLVariable = serde_yaml::from_value(var.clone()).ok()?;
|
let var: YAMLVariable = serde_yaml::from_value(var.clone()).ok()?;
|
||||||
let (var, warnings) = try_convert_into_variable(var).ok()?;
|
let (var, warnings) = try_convert_into_variable(var, true).ok()?;
|
||||||
warnings.into_iter().for_each(|warning| {
|
warnings.into_iter().for_each(|warning| {
|
||||||
warn!("{}", warning);
|
warn!("{}", warning);
|
||||||
});
|
});
|
||||||
|
|
|
@ -74,7 +74,7 @@ impl Importer for YAMLImporter {
|
||||||
|
|
||||||
let mut global_vars = Vec::new();
|
let mut global_vars = Vec::new();
|
||||||
for yaml_global_var in yaml_group.global_vars.as_ref().cloned().unwrap_or_default() {
|
for yaml_global_var in yaml_group.global_vars.as_ref().cloned().unwrap_or_default() {
|
||||||
match try_convert_into_variable(yaml_global_var) {
|
match try_convert_into_variable(yaml_global_var, false) {
|
||||||
Ok((var, warnings)) => {
|
Ok((var, warnings)) => {
|
||||||
global_vars.push(var);
|
global_vars.push(var);
|
||||||
non_fatal_errors.extend(warnings.into_iter().map(ErrorRecord::warn));
|
non_fatal_errors.extend(warnings.into_iter().map(ErrorRecord::warn));
|
||||||
|
@ -208,8 +208,9 @@ pub fn try_convert_into_match(
|
||||||
|
|
||||||
let mut vars: Vec<Variable> = Vec::new();
|
let mut vars: Vec<Variable> = Vec::new();
|
||||||
for yaml_var in yaml_match.vars.unwrap_or_default() {
|
for yaml_var in yaml_match.vars.unwrap_or_default() {
|
||||||
let (var, var_warnings) = try_convert_into_variable(yaml_var.clone())
|
let (var, var_warnings) =
|
||||||
.with_context(|| format!("failed to load variable: {:?}", yaml_var))?;
|
try_convert_into_variable(yaml_var.clone(), use_compatibility_mode)
|
||||||
|
.with_context(|| format!("failed to load variable: {:?}", yaml_var))?;
|
||||||
warnings.extend(var_warnings);
|
warnings.extend(var_warnings);
|
||||||
vars.push(var);
|
vars.push(var);
|
||||||
}
|
}
|
||||||
|
@ -270,6 +271,7 @@ pub fn try_convert_into_match(
|
||||||
name: "form1".to_owned(),
|
name: "form1".to_owned(),
|
||||||
var_type: "form".to_owned(),
|
var_type: "form".to_owned(),
|
||||||
params,
|
params,
|
||||||
|
..Default::default()
|
||||||
}];
|
}];
|
||||||
|
|
||||||
MatchEffect::Text(TextEffect {
|
MatchEffect::Text(TextEffect {
|
||||||
|
@ -303,13 +305,17 @@ pub fn try_convert_into_match(
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn try_convert_into_variable(yaml_var: YAMLVariable) -> Result<(Variable, Vec<Warning>)> {
|
pub fn try_convert_into_variable(
|
||||||
|
yaml_var: YAMLVariable,
|
||||||
|
use_compatibility_mode: bool,
|
||||||
|
) -> Result<(Variable, Vec<Warning>)> {
|
||||||
Ok((
|
Ok((
|
||||||
Variable {
|
Variable {
|
||||||
name: yaml_var.name,
|
name: yaml_var.name,
|
||||||
var_type: yaml_var.var_type,
|
var_type: yaml_var.var_type,
|
||||||
params: convert_params(yaml_var.params)?,
|
params: convert_params(yaml_var.params)?,
|
||||||
id: next_id(),
|
id: next_id(),
|
||||||
|
inject_vars: !use_compatibility_mode && yaml_var.inject_vars.unwrap_or(true),
|
||||||
},
|
},
|
||||||
Vec::new(),
|
Vec::new(),
|
||||||
))
|
))
|
||||||
|
@ -615,7 +621,8 @@ mod tests {
|
||||||
id: 0,
|
id: 0,
|
||||||
name: "form1".to_string(),
|
name: "form1".to_string(),
|
||||||
var_type: "form".to_string(),
|
var_type: "form".to_string(),
|
||||||
params
|
params,
|
||||||
|
..Default::default()
|
||||||
}],
|
}],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
|
@ -651,7 +658,8 @@ mod tests {
|
||||||
id: 0,
|
id: 0,
|
||||||
name: "form1".to_string(),
|
name: "form1".to_string(),
|
||||||
var_type: "form".to_string(),
|
var_type: "form".to_string(),
|
||||||
params
|
params,
|
||||||
|
..Default::default()
|
||||||
}],
|
}],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
|
@ -689,7 +697,8 @@ mod tests {
|
||||||
id: 0,
|
id: 0,
|
||||||
name: "form1".to_string(),
|
name: "form1".to_string(),
|
||||||
var_type: "form".to_string(),
|
var_type: "form".to_string(),
|
||||||
params
|
params,
|
||||||
|
..Default::default()
|
||||||
}],
|
}],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -125,6 +125,9 @@ pub struct YAMLVariable {
|
||||||
|
|
||||||
#[serde(default = "default_params")]
|
#[serde(default = "default_params")]
|
||||||
pub params: Mapping,
|
pub params: Mapping,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
pub inject_vars: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_params() -> Mapping {
|
fn default_params() -> Mapping {
|
||||||
|
|
|
@ -205,6 +205,7 @@ pub struct Variable {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub var_type: String,
|
pub var_type: String,
|
||||||
pub params: Params,
|
pub params: Params,
|
||||||
|
pub inject_vars: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Variable {
|
impl Default for Variable {
|
||||||
|
@ -214,6 +215,7 @@ impl Default for Variable {
|
||||||
name: String::new(),
|
name: String::new(),
|
||||||
var_type: String::new(),
|
var_type: String::new(),
|
||||||
params: Params::new(),
|
params: Params::new(),
|
||||||
|
inject_vars: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user