feat(config): implement depends_on field for variables
This commit is contained in:
parent
8acca4a366
commit
aa26f27ed9
|
@ -316,6 +316,7 @@ pub fn try_convert_into_variable(
|
||||||
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),
|
inject_vars: !use_compatibility_mode && yaml_var.inject_vars.unwrap_or(true),
|
||||||
|
depends_on: yaml_var.depends_on,
|
||||||
},
|
},
|
||||||
Vec::new(),
|
Vec::new(),
|
||||||
))
|
))
|
||||||
|
@ -745,6 +746,52 @@ mod tests {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn vars_inject_vars_and_depends_on() {
|
||||||
|
let vars = vec![
|
||||||
|
Variable {
|
||||||
|
name: "var1".to_string(),
|
||||||
|
var_type: "test".to_string(),
|
||||||
|
depends_on: vec!["test".to_owned()],
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
Variable {
|
||||||
|
name: "var2".to_string(),
|
||||||
|
var_type: "test".to_string(),
|
||||||
|
inject_vars: false,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
];
|
||||||
|
assert_eq!(
|
||||||
|
create_match(
|
||||||
|
r#"
|
||||||
|
trigger: "Hello"
|
||||||
|
replace: "world"
|
||||||
|
vars:
|
||||||
|
- name: var1
|
||||||
|
type: test
|
||||||
|
depends_on: ["test"]
|
||||||
|
- name: var2
|
||||||
|
type: "test"
|
||||||
|
inject_vars: false
|
||||||
|
"#
|
||||||
|
)
|
||||||
|
.unwrap(),
|
||||||
|
Match {
|
||||||
|
cause: MatchCause::Trigger(TriggerCause {
|
||||||
|
triggers: vec!["Hello".to_string()],
|
||||||
|
..Default::default()
|
||||||
|
}),
|
||||||
|
effect: MatchEffect::Text(TextEffect {
|
||||||
|
replace: "world".to_string(),
|
||||||
|
vars,
|
||||||
|
..Default::default()
|
||||||
|
}),
|
||||||
|
..Default::default()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn vars_no_params_maps_correctly() {
|
fn vars_no_params_maps_correctly() {
|
||||||
let vars = vec![Variable {
|
let vars = vec![Variable {
|
||||||
|
|
|
@ -128,6 +128,9 @@ pub struct YAMLVariable {
|
||||||
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub inject_vars: Option<bool>,
|
pub inject_vars: Option<bool>,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
pub depends_on: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_params() -> Mapping {
|
fn default_params() -> Mapping {
|
||||||
|
|
|
@ -206,6 +206,7 @@ pub struct Variable {
|
||||||
pub var_type: String,
|
pub var_type: String,
|
||||||
pub params: Params,
|
pub params: Params,
|
||||||
pub inject_vars: bool,
|
pub inject_vars: bool,
|
||||||
|
pub depends_on: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Variable {
|
impl Default for Variable {
|
||||||
|
@ -216,6 +217,7 @@ impl Default for Variable {
|
||||||
var_type: String::new(),
|
var_type: String::new(),
|
||||||
params: Params::new(),
|
params: Params::new(),
|
||||||
inject_vars: true,
|
inject_vars: true,
|
||||||
|
depends_on: Vec::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user