33 lines
776 B
JavaScript
33 lines
776 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var fs = require('fs');
|
||
|
var debug = require('debug')('xsenv');
|
||
|
var VError = require('verror');
|
||
|
|
||
|
module.exports = loadEnv;
|
||
|
|
||
|
function loadEnv(jsonFile) {
|
||
|
jsonFile = jsonFile || 'default-env.json';
|
||
|
if (!fs.existsSync(jsonFile)) {
|
||
|
return;
|
||
|
}
|
||
|
debug('Loading environment from %s', jsonFile);
|
||
|
try {
|
||
|
var json = JSON.parse(fs.readFileSync(jsonFile, 'utf8'));
|
||
|
} catch (err) {
|
||
|
throw new VError(err, 'Could not parse %s', jsonFile);
|
||
|
}
|
||
|
for (var key in json) {
|
||
|
if (key in process.env) {
|
||
|
continue; // do not change existing env vars
|
||
|
}
|
||
|
var val = json[key];
|
||
|
// env vars hold only strings
|
||
|
if (typeof val === 'object') {
|
||
|
process.env[key] = JSON.stringify(val);
|
||
|
} else {
|
||
|
process.env[key] = val + '';
|
||
|
}
|
||
|
}
|
||
|
}
|