diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2016-07-24 18:06:01 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2016-07-24 19:30:04 +0200 |
commit | 3eedab52064011f219d718bb0fff71ed41e7e1a3 (patch) | |
tree | fb3ae91b8c777191bfdcca9367eaa69fc887975f /libimagrt | |
parent | 6f0670003be5958644d0853018452352f27ca97b (diff) |
Add Runtime functionality to patch in-memory-configuration-file-contents on loading application
Diffstat (limited to 'libimagrt')
-rw-r--r-- | libimagrt/src/runtime.rs | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/libimagrt/src/runtime.rs b/libimagrt/src/runtime.rs index e5b31898..63678672 100644 --- a/libimagrt/src/runtime.rs +++ b/libimagrt/src/runtime.rs @@ -88,7 +88,16 @@ impl<'a> Runtime<'a> { None }, - Ok(cfg) => Some(cfg), + Ok(mut cfg) => { + if let Err(e) = cfg.override_config(get_override_specs(&matches)) { + error!("Could not apply config overrides"); + trace_error(&e); + + // TODO: continue question (interactive) + } + + Some(cfg) + } }; let store_config = match cfg { @@ -291,3 +300,19 @@ impl<'a> Runtime<'a> { } } +fn get_override_specs(matches: &ArgMatches) -> Vec<String> { + matches + .values_of("config-override") + .map(|values| { + values + .filter(|s| { + let b = s.contains("="); + if !b { warn!("override '{}' does not contain '=' - will be ignored!", s); } + b + }) + .map(String::from) + .collect() + }) + .unwrap_or(vec![]) +} + |