summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-03-05 14:54:26 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-03-05 14:54:32 +0000
commitb03c8970e698312e237fe176ee2654e819c5c202 (patch)
tree3881e736f5b1b317299eef7451bb1fed7817852f /src/config/ConfigManager.cpp
parentde5f1b2a833a59d3b0375f24675d27cea99e56d1 (diff)
Allow environment in config
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 5037d9cb..6133f41f 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -31,6 +31,18 @@ CConfigManager::CConfigManager() {
Debug::disableLogs = &configValues["debug:disable_logs"].intValue;
Debug::disableTime = &configValues["debug:disable_time"].intValue;
+
+ populateEnvironment();
+}
+
+void CConfigManager::populateEnvironment() {
+ environmentVariables.clear();
+ for (char** env = environ; *env; ++env) {
+ const std::string ENVVAR = *env;
+ const auto VARIABLE = ENVVAR.substr(0, ENVVAR.find_first_of('='));
+ const auto VALUE = ENVVAR.substr(ENVVAR.find_first_of('=') + 1);
+ environmentVariables[VARIABLE] = VALUE;
+ }
}
void CConfigManager::setDefaultVars() {
@@ -1140,13 +1152,25 @@ void CConfigManager::applyUserDefinedVars(std::string& line, const size_t equals
while (dollarPlace != std::string::npos) {
const auto STRAFTERDOLLAR = line.substr(dollarPlace + 1);
+ bool found = false;
for (auto& [var, value] : configDynamicVars) {
if (STRAFTERDOLLAR.find(var) == 0) {
line.replace(dollarPlace, var.length() + 1, value);
+ found = true;
break;
}
}
+ if (!found) {
+ // maybe env?
+ for (auto& [var, value] : environmentVariables) {
+ if (STRAFTERDOLLAR.find(var) == 0) {
+ line.replace(dollarPlace, var.length() + 1, value);
+ break;
+ }
+ }
+ }
+
dollarPlace = line.find_first_of('$', dollarPlace + 1);
}
}