You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
928 B
29 lines
928 B
let fs = require('fs');
|
|
let { logger } = require('./logging');
|
|
|
|
let loadedConfigs = new Map();
|
|
|
|
function sanitizeConfig(config: any, fields = []) : any {
|
|
let clonedConfig = { ...config };
|
|
fields.forEach((field) => {
|
|
clonedConfig[field] = '******'
|
|
})
|
|
return clonedConfig;
|
|
}
|
|
|
|
function getConfig(configFile: string, sanitizedFields: Array<string> = [], reload: Boolean = false) : any {
|
|
if (loadedConfigs.has(configFile) && !reload) {
|
|
return loadedConfigs.get(configFile);
|
|
} else {
|
|
logger.info("Reading config: %s", configFile);
|
|
let rawConfigData = fs.readFileSync(configFile);
|
|
let config = JSON.parse(rawConfigData);
|
|
logger.info("Loaded config: %s", configFile);
|
|
logger.debug("%o", sanitizeConfig(config, sanitizedFields));
|
|
loadedConfigs.set(configFile, config);
|
|
return config;
|
|
}
|
|
}
|
|
|
|
export { getConfig };
|
|
export { sanitizeConfig };
|