diff --git a/crates/common/src/manager/boot.rs b/crates/common/src/manager/boot.rs index 563082fa..703cffb4 100644 --- a/crates/common/src/manager/boot.rs +++ b/crates/common/src/manager/boot.rs @@ -144,8 +144,8 @@ impl BootManager { } let cfg_local = config.keys.clone(); - // Resolve macros - config.resolve_macros().await; + // Resolve environment macros + config.resolve_macros(&["env"]).await; // Parser servers let mut servers = Servers::parse(&mut config); @@ -153,6 +153,9 @@ impl BootManager { // Bind ports and drop privileges servers.bind_and_drop_priv(&mut config); + // Resolve file and configuration macros + config.resolve_macros(&["file", "cfg"]).await; + // Load stores let mut stores = Stores::parse(&mut config).await; diff --git a/crates/common/src/manager/config.rs b/crates/common/src/manager/config.rs index 77319a96..7efe2d73 100644 --- a/crates/common/src/manager/config.rs +++ b/crates/common/src/manager/config.rs @@ -76,7 +76,7 @@ impl ConfigManager { keys: self.cfg_local.load().as_ref().clone(), ..Default::default() }; - config.resolve_macros().await; + config.resolve_all_macros().await; self.extend_config(&mut config, prefix) .await .map(|_| config) diff --git a/crates/utils/src/config/mod.rs b/crates/utils/src/config/mod.rs index 26b01f79..9b779f00 100644 --- a/crates/utils/src/config/mod.rs +++ b/crates/utils/src/config/mod.rs @@ -74,12 +74,16 @@ pub struct Rate { pub type Result = std::result::Result; impl Config { - pub async fn resolve_macros(&mut self) { - for macro_class in ["env", "file", "cfg"] { + pub async fn resolve_macros(&mut self, classes: &[&str]) { + for macro_class in classes { self.resolve_macro_type(macro_class).await; } } + pub async fn resolve_all_macros(&mut self) { + self.resolve_macros(&["env", "file", "cfg"]).await; + } + async fn resolve_macro_type(&mut self, class: &str) { let macro_start = format!("%{{{class}:"); let mut replacements = AHashMap::new();