
Configuration.pudu
Pudu28 lines1.1 KB
1/** @Environment.Configuration.Module — variables layered over application configuration */2module PuduLangEnvironment.Configuration34import Std.App.Config as Config5import Std.Map as Map6import PuduLangEnvironment.Domain.Keys as Keys7import PuduLangEnvironment.Variables as Variables89/** @Environment.Configuration.Overlaying — configuration with loaded variables over it */10export trait Overlaying {11 fn withVariables(self: &Self, variables: &Variables.Variables) -> Self12}1314impl Overlaying for Config.Config {15 16 17 18 fn withVariables(self: &Self, variables: &Variables.Variables) -> Self {19 var settings = self.settings20 for key in Map.keys(&self.settings) {21 if let Some(held) = Variables.find(variables, Keys.fromSetting(key)) {22 settings = settings.insert(key, Config.Setting{value: held, source: Config.Environment})23 }24 }25 Config.Config{..*self, settings: settings}26 }27}28