diff options
author | Guillaume Pasquet <dev@etenil.net> | 2021-11-19 22:33:56 +0000 |
---|---|---|
committer | Guillaume Pasquet <dev@etenil.net> | 2021-11-19 22:33:56 +0000 |
commit | da0cd2fe49a4fba917516fd637fef6be6c304896 (patch) | |
tree | ae05d56d59edb1207e3b29ffbb76eede7bc8ec46 /src | |
parent | 8f0d2e928981f06b0f6d53da89356ba5baeb8422 (diff) |
Added Context structure.
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs index b6255d7..81cb18d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,11 +2,33 @@ mod barbfile; use jsonformat::{format_json, Indentation}; +use std::collections::HashMap; +use std::env; use std::fs; use std::str::FromStr; use ureq; +struct Context { + vars: HashMap<String, String>, +} + +impl Context { + pub fn new() -> Context { + Context { + vars: HashMap::new(), + } + } + + pub fn get_var(&self, name: String) -> Option<String> { + self.vars + .get(&name) + .map(|val| val.clone()) + .or_else(|| env::var(name).ok()) + } +} + fn main() { + let mut context = Context::new(); let bfile = barbfile::BarbFile::from_str( fs::read_to_string("test.barb") .expect("Failed to read file") |