|
|
@ -2,7 +2,7 @@ use std::process::exit; |
|
|
|
use std::sync::RwLock; |
|
|
|
|
|
|
|
use crate::error::Error; |
|
|
|
use crate::util::get_env; |
|
|
|
use crate::util::{get_env, get_env_bool}; |
|
|
|
|
|
|
|
lazy_static! { |
|
|
|
pub static ref CONFIG: Config = Config::load().unwrap_or_else(|e| { |
|
|
@ -23,7 +23,7 @@ macro_rules! make_config { |
|
|
|
$group:ident $(: $group_enabled:ident)? { |
|
|
|
$( |
|
|
|
$(#[doc = $doc:literal])+ |
|
|
|
$name:ident : $ty:ty, $editable:literal, $none_action:ident $(, $default:expr)?; |
|
|
|
$name:ident : $ty:ident, $editable:literal, $none_action:ident $(, $default:expr)?; |
|
|
|
)+}, |
|
|
|
)+) => { |
|
|
|
pub struct Config { inner: RwLock<Inner> } |
|
|
@ -50,9 +50,9 @@ macro_rules! make_config { |
|
|
|
|
|
|
|
let mut builder = ConfigBuilder::default(); |
|
|
|
$($( |
|
|
|
builder.$name = get_env(&stringify!($name).to_uppercase()); |
|
|
|
builder.$name = make_config! { @getenv &stringify!($name).to_uppercase(), $ty }; |
|
|
|
)+)+ |
|
|
|
|
|
|
|
|
|
|
|
builder |
|
|
|
} |
|
|
|
|
|
|
@ -189,6 +189,10 @@ macro_rules! make_config { |
|
|
|
let f: &dyn Fn(&ConfigItems) -> _ = &$default_fn; |
|
|
|
f($config) |
|
|
|
}}; |
|
|
|
|
|
|
|
( @getenv $name:expr, bool ) => { get_env_bool($name) }; |
|
|
|
( @getenv $name:expr, $ty:ident ) => { get_env($name) }; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//STRUCTURE:
|
|
|
|