Expand description
Environment-Variables configuration loader (env feature which is enabled by default).
This is only usable if you enabled env Cargo feature.
§Example
use std::env::set_var;
use plugx_config::{
loader::{Loader, env::Env},
ext::url::Url,
};
set_var("MY_APP_NAME__FOO__B_A_R", "Baz");
set_var("MY_APP_NAME__QUX__ABC", "XYZ");
let url = Url::try_from("env://?prefix=MY_APP_NAME").expect("A valid URL!");
let mut loader = Env::new();
// You could set `prefix`, `separator`, and `strip_prefix` programmatically like this:
// loader.[set|with]_prefix("MY_APP_NAME");
// loader.[set|with]_separator("__");
// loader.[set|with]_strip_prefix(true);
// We do not set `whitelist` so we're going to load all plugins' configurations:
let mut maybe_whitelist = None;
let result = loader.load(&url, maybe_whitelist, false).unwrap();
let (_, foo) = result
.iter()
.find(|(plugin_name, _)| plugin_name == "foo")
.expect("`foo` plugin config");
assert_eq!(foo.maybe_contents(), Some(&"B_A_R=\"Baz\"".to_string()));
let (_, qux) = result
.iter()
.find(|(plugin_name, _)| plugin_name == "qux")
.expect("`qux` plugin config");
assert_eq!(qux.maybe_contents(), Some(&"ABC=\"XYZ\"".to_string()));
// Only load `foo` plugin configuration:
let whitelist = ["foo".to_string()].to_vec();
maybe_whitelist = Some(&whitelist);
let result = loader.load(&url, maybe_whitelist, false).unwrap();
assert!(result.iter().find(|(plugin_name, _)| plugin_name == "foo").is_some());
assert!(result.iter().find(|(plugin_name, _)| plugin_name == "qux").is_none());See loader documentation to known how loaders work.
Modules§
Structs§
- Env
- Loads configurations from Environment-Variables.