mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-08 14:38:47 +00:00
Added support for environment variable substitution
* Only environment variables starting with HOMEPAGE_VAR_ and HOMEPAGE_FILE_ are supported * The value of env var HOMEPAGE_VAR_XXX will replace {{HOMEPAGE_VAR_XXX}} in any config * The value of env var HOMEPAGE_FILE_XXX must be a file path, the contents of which will be used to replace {{HOMEPAGE_FILE_XXX}} in any config * If a substituted value contains a variable reference it may also be replaced, but the behavior is non-deterministic
This commit is contained in:
parent
b65f6fca19
commit
e0f1aae4d5
6 changed files with 38 additions and 13 deletions
|
@ -27,10 +27,28 @@ export default function checkAndCopyConfig(config) {
|
|||
}
|
||||
}
|
||||
|
||||
export function substituteEnvironmentVars(str) {
|
||||
const homepageVarPrefix = "HOMEPAGE_VAR_";
|
||||
const homepageFilePrefix = "HOMEPAGE_FILE_";
|
||||
|
||||
let result = str;
|
||||
Object.keys(process.env).forEach(key => {
|
||||
if (key.startsWith(homepageVarPrefix)) {
|
||||
result = result.replaceAll(`{{${key}}}`, process.env[key]);
|
||||
} else if (key.startsWith(homepageFilePrefix)) {
|
||||
const filename = process.env[key];
|
||||
const fileContents = readFileSync(filename, "utf8");
|
||||
result = result.replaceAll(`{{${key}}}`, fileContents);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
export function getSettings() {
|
||||
checkAndCopyConfig("settings.yaml");
|
||||
|
||||
const settingsYaml = join(process.cwd(), "config", "settings.yaml");
|
||||
const fileContents = readFileSync(settingsYaml, "utf8");
|
||||
const rawFileContents = readFileSync(settingsYaml, "utf8");
|
||||
const fileContents = substituteEnvironmentVars(rawFileContents);
|
||||
return yaml.load(fileContents) ?? {};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue