(function ()()

in lib/painless-config.js [11:72]


(function () {
  var config = {};

  var fallbacks;
  var fallbackLocation;

  function findFallbacks() {
    if (fallbackLocation !== undefined) {
      return;
    }

    fallbackLocation = walkBack(process.cwd(), 'env.json');
  }

  function loadFallbacks() {
    if (fallbacks !== undefined) {
      return;
    }

    findFallbacks();
    if (fallbackLocation === null) {
      fallbacks = {};
      return;
    }

    var fallbackData = fs.readFileSync(fallbackLocation, 'utf8');
    fallbacks = JSON.parse(fallbackData);
  }

  function getEnvPath(env) {
    return env.replace(/[_-]/g, '.');
  }

  config.get = function (variable) {
    var value = process.env[variable];
    if (value === undefined) {
      loadFallbacks();
      value = fallbacks[variable];
    }
    return value;
  };

  config.all = function () {
    loadFallbacks();
    var all = {};
    for (var env in process.env) {
      if (process.env.hasOwnProperty(env)) {
        var envPath = getEnvPath(env);
        objectPath.set(all, envPath, process.env[env]);
      }
    }
    for (var fallbackEnv in fallbacks) {
      var fallbackEnvPath = getEnvPath(fallbackEnv);
      if (objectPath.get(all, fallbackEnvPath) === undefined) {
        objectPath.set(all, fallbackEnvPath, fallbacks[fallbackEnv]);
      }
    }
    return all;
  };

  module.exports = config;
})();