Module plugx_config::entity
source · Expand description
Configuration entity for each plugin.
Example usage
use std::env::set_var;
use plugx_input::Input;
use url::Url;
use plugx_config::{
entity::ConfigurationEntity,
loader::{ConfigurationLoader, env::ConfigurationLoaderEnv},
parser::{ConfigurationParser, env::ConfigurationParserEnv},
};
let url = "env://".parse::<Url>().expect("Valid URL");
let plugin_name = "foo";
let loader = ConfigurationLoaderEnv::new().with_prefix("MY_APP_NAME_").with_key_separator("__");
set_var("MY_APP_NAME_FOO__BAR__BAZ", "3.14");
set_var("MY_APP_NAME_FOO__QUX", "false");
let loaded = loader.try_load(&url, None).unwrap();
let foo_entity = loaded.get(plugin_name).unwrap();
// Above `loader` actually does this:
let loader_name = loader.name();
let mut foo_entity2 = ConfigurationEntity::new(url.clone(), plugin_name, loader_name)
.with_format("env")
.with_contents("BAR__BAZ=\"3.14\"\nQUX=\"false\"");
assert_eq!(&foo_entity2, foo_entity);
// We can pass a list of `ConfigurationParser` to an entity to parse its contents.
let parser = ConfigurationParserEnv::new().with_key_separator("__");
let parser_list: Vec<Box<dyn ConfigurationParser>> = vec![Box::new(parser)];
let input = foo_entity2.parse_contents_mut(&parser_list).unwrap();
assert_eq!(input.map_ref().unwrap().get("qux").unwrap(), &false.into());Structs
- A configuration entity for each plugin.