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}