diff options
Diffstat (limited to 'examples/glob')
-rw-r--r-- | examples/glob/Cargo.toml | 7 | ||||
-rw-r--r-- | examples/glob/conf/00-default.toml | 1 | ||||
-rw-r--r-- | examples/glob/conf/05-some.yml | 2 | ||||
-rw-r--r-- | examples/glob/conf/99-extra.json | 5 | ||||
-rw-r--r-- | examples/glob/src/main.rs | 52 |
5 files changed, 67 insertions, 0 deletions
diff --git a/examples/glob/Cargo.toml b/examples/glob/Cargo.toml new file mode 100644 index 0000000..c4b042e --- /dev/null +++ b/examples/glob/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "glob" +version = "0.1.0" + +[dependencies] +config = { path = "../../" } +glob = "0.2" diff --git a/examples/glob/conf/00-default.toml b/examples/glob/conf/00-default.toml new file mode 100644 index 0000000..7b95e7a --- /dev/null +++ b/examples/glob/conf/00-default.toml @@ -0,0 +1 @@ +debug = false diff --git a/examples/glob/conf/05-some.yml b/examples/glob/conf/05-some.yml new file mode 100644 index 0000000..52555a0 --- /dev/null +++ b/examples/glob/conf/05-some.yml @@ -0,0 +1,2 @@ +secret: THIS IS SECRET +debug: true diff --git a/examples/glob/conf/99-extra.json b/examples/glob/conf/99-extra.json new file mode 100644 index 0000000..26f908c --- /dev/null +++ b/examples/glob/conf/99-extra.json @@ -0,0 +1,5 @@ +{ + "that": 3, + "this": 1230, + "key": "sdgnjklsdjklgds" +} diff --git a/examples/glob/src/main.rs b/examples/glob/src/main.rs new file mode 100644 index 0000000..f88f1ed --- /dev/null +++ b/examples/glob/src/main.rs @@ -0,0 +1,52 @@ +extern crate glob; +extern crate config; + +use std::path::Path; +use std::collections::HashMap; +use config::*; +use glob::glob; + +fn main() { + // Option 1 + // -------- + // Gather all conf files from conf/ manually + let mut settings = Config::default(); + settings + // File::with_name(..) is shorthand for File::from(Path::new(..)) + .merge(File::with_name("conf/00-default.toml")).unwrap() + .merge(File::from(Path::new("conf/05-some.yml"))).unwrap() + .merge(File::from(Path::new("conf/99-extra.json"))).unwrap(); + + // Print out our settings (as a HashMap) + println!("\n{:?} \n\n-----------", + settings.deserialize::<HashMap<String, String>>().unwrap()); + + // Option 2 + // -------- + // Gather all conf files from conf/ manually, but put in 1 merge call. + let mut settings = Config::default(); + settings + .merge(vec![File::with_name("conf/00-default.toml"), + File::from(Path::new("conf/05-some.yml")), + File::from(Path::new("conf/99-extra.json"))]) + .unwrap(); + + // Print out our settings (as a HashMap) + println!("\n{:?} \n\n-----------", + settings.deserialize::<HashMap<String, String>>().unwrap()); + + // Option 3 + // -------- + // Gather all conf files from conf/ using glob and put in 1 merge call. + let mut settings = Config::default(); + settings + .merge(glob("conf/*") + .unwrap() + .map(|path| File::from(path.unwrap())) + .collect::<Vec<_>>()) + .unwrap(); + + // Print out our settings (as a HashMap) + println!("\n{:?} \n\n-----------", + settings.deserialize::<HashMap<String, String>>().unwrap()); +} |