diff options
author | Lars Wirzenius <liw@liw.fi> | 2019-09-20 10:22:39 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2019-09-20 10:22:39 +0300 |
commit | bd6cbcd8aaa2bff6f611e73c66ba0affdf67f134 (patch) | |
tree | e0e34e3e062a211d0d6fe1084a2cd3df4e97445a /src/lib.rs | |
parent | 133228357f8cf62f29ad85cc23ad1590ef2ca4e9 (diff) | |
download | roadmap-bd6cbcd8aaa2bff6f611e73c66ba0affdf67f134.tar.gz |
Change: parse dependency lists in yaml
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 16 |
1 files changed, 15 insertions, 1 deletions
@@ -108,10 +108,20 @@ impl Roadmap { // Convert a Value into a Step, if possible. fn step_from_value(name: &str, value: &Value) -> Result<Step, &'static str> { let label_key = Value::String("label".to_string()); + let deps_key = Value::String("depends".to_string()); + match value { Value::Mapping(map) => { if let Some(Value::String(label)) = map.get(&label_key) { - return Ok(Step::new(name, label)); + let mut step = Step::new(name, label); + if let Some(Value::Sequence(deps)) = map.get(&deps_key) { + for depname in deps.iter() { + if let Value::String(depname) = depname { + step.add_dependency(depname); + } + } + } + return Ok(step); } Ok(Step::new(name, "")) }, @@ -277,9 +287,13 @@ second: let first = roadmap.get_step("first").unwrap(); assert_eq!(first.name(), "first"); assert_eq!(first.label(), "the first step"); + let deps: Vec<&String> = first.dependencies().collect(); + assert_eq!(deps.len(), 0); let second = roadmap.get_step("second").unwrap(); assert_eq!(second.name(), "second"); assert_eq!(second.label(), "the second step"); + let deps: Vec<&String> = second.dependencies().collect(); + assert_eq!(deps, vec!["first"]); } } |