| system.js | |
|---|---|
| /*
 * system.js: Simple memory-based store for process environment variables and
 *            command-line arguments.
 *
 * (C) 2011, Charlie Robbins
 *
 */
 
var util = require('util'),
    Memory = require('./memory').Memory;
  | |
| function System (options)@options {Object} Options for this instance.Constructor function for the System nconf store, a simple abstraction around the Memory store that can read process environment variables and command-line arguments. | var System = exports.System = function (options) {
  options = options || {};
  Memory.call(this, options);
  this.type      = 'system';
  this.overrides = options.overrides || null;
  this.env       = options.env       || false;
  this.argv      = options.argv      || false;
}; | 
| Inherit from the Memory store | util.inherits(System, Memory); | 
| function loadSync ()Loads the data passed in from  | System.prototype.loadSync = function () {
  if (this.env) {
    this.loadEnv();
  }
  
  if (this.argv) {
    this.loadArgv();
  }
  
  if (this.overrides) {
    this.loadOverrides();
  }
  
  return this.store;
}; | 
| function loadOverrides ()Loads any overrides set on this instance into
the underlying managed  | System.prototype.loadOverrides = function () {
  if (!this.overrides) {
    return;
  }
  
  var self = this,
      keys = Object.keys(this.overrides);
  
  keys.forEach(function (key) {
    self.set(key, self.overrides[key]);
  });
  
  return this.store;
}; | 
| function loadArgv ()Loads the data passed in from the command-line arguments into this instance. | System.prototype.loadArgv = function () {
  var self = this, 
      argv;
  
  if (typeof this.argv === 'object') {
    argv = require('optimist').options(this.argv).argv;
  }
  else if (this.argv) {
    argv = require('optimist').argv;
  }
  
  if (!argv) {
    return;
  }
  
  Object.keys(argv).forEach(function (key) {
    self.set(key, argv[key]);
  });
  
  return this.store;
}; | 
| function loadEnv ()Loads the data passed in from  | System.prototype.loadEnv = function () {
  var self = this;
  
  if (!this.env) {
    return;
  }
  
  Object.keys(process.env).filter(function (key) {
    return !self.env.length || self.env.indexOf(key) !== -1;
  }).forEach(function (key) {
    self.set(key, process.env[key]);
  });
    
  return this.store;
};
 |