vulcain-corejs
Version:
Vulcain micro-service framework
46 lines • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const NONE = "$$__none__$$";
class EnvironmentVariableSource {
get(name) {
// As is
let env = process.env[name];
if (env) {
if (env === NONE)
return undefined;
return env;
}
// Replace dot
env = process.env[name.replace(/\./g, '_')];
if (env)
return env;
// Replace dot with uppercases
env = process.env[name.toUpperCase().replace(/\./g, '_')];
if (env)
return env;
// Transform camel case to upper case
// ex: myProperty --> MY_PROPERTY
const regex = /([A-Z])|(\.)/g;
const subst = `_\$1`;
let res = name.replace(regex, subst);
env = process.env[res.toUpperCase()];
// Otherwise as a docker secret
if (env === undefined) {
try {
// Using sync method here is assumed
env = fs.readFileSync('/run/secrets/' + name, { encoding: 'utf8', flag: 'r' });
}
catch (e) {
// ignore error
}
}
if (env === undefined) {
// Set cache to avoid many file reads
process.env[name] = NONE;
}
return env;
}
}
exports.EnvironmentVariableSource = EnvironmentVariableSource;
//# sourceMappingURL=environmentVariableSource.js.map