From 74ce2daf0565f75816c3151a880710d7776abb87 Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Tue, 27 Jul 2021 01:14:00 +0200 Subject: [PATCH] Add `Builder::env` to read environment variables --- examples/simple.rs | 1 + src/builder.rs | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/examples/simple.rs b/examples/simple.rs index 0145943..797cf63 100644 --- a/examples/simple.rs +++ b/examples/simple.rs @@ -43,6 +43,7 @@ fn main() -> Result<(), anyhow::Error> { println!("--------------------------------------------------------"); let r = Conf::builder() + .env() .file("examples/files/simple.toml") .file("examples/files/etc/simple.yaml") .load()?; diff --git a/src/builder.rs b/src/builder.rs index 53e2b47..31c224b 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -30,6 +30,12 @@ impl Builder { self } + /// Adds the environment variables as a source. + pub fn env(mut self) -> Self { + self.sources.push(Source::Env); + self + } + /// Adds an already loaded partial configuration as source. pub fn preloaded(mut self, partial: C::Partial) -> Self { self.sources.push(Source::Preloaded(partial)); @@ -46,6 +52,7 @@ impl Builder { for source in self.sources { let layer = match source { Source::File(path) => File::new(path)?.load()?, + Source::Env => C::Partial::from_env()?, Source::Preloaded(p) => p, }; @@ -58,5 +65,6 @@ impl Builder { enum Source { File(PathBuf), + Env, Preloaded(C::Partial), }