scsys_config/macros/
config.rs

1/// create a macro to streamline the process of adding sources
2///
3/// ```rust
4/// use scsys_config::{config, config_sources};
5///
6/// use config::builder::{ConfigBuilder, DefaultState};
7///
8/// let mut builder: ConfigBuilder<DefaultState> = ConfigBuilder::default();
9///
10/// builder = config_sources! {
11///     builder {
12///         config::File::with_name("config.toml").required(false),
13///     }
14/// };
15/// ```
16#[macro_export]
17macro_rules! config_sources {
18    ($builder:ident {$($source:expr),* $(,)?}) => {
19        $crate::config_sources!(@impl $builder::<[$($source),*]>)
20    };
21    (@impl $builder:ident::<[$($source:expr),* $(,)?]>) => {
22        $builder$(.add_source($source))*
23    };
24    (@file file($wd:expr).required($req:expr)) => {
25        config::File::with_name($wd).required($req);
26    };
27}