code: function parseOptions(opts) {
    opts = opts || {};
    var argv = [];
    var options = {};
    var process_argv = process.argv;
    for (var i = 2; i < process_argv.length; i++) {
      if (process_argv[i].indexOf('--') == 0) {
        var arg = process_argv[i];
        if (arg.indexOf("=") > 0) {
          var arg_kv = arg.split('=');
          arg = arg_kv[0];
          arg = arg.replace('--','');
          arg = replaceAll(arg, '-', '_');
          options[arg] = arg_kv[1];
          if (typeof opts[arg] == 'string') {
            if (opts[arg] == 'int' || opts[arg] == 'integer') {
              options[arg] = parseInt(options[arg]);
            } else if (opts[arg] == 'float') {
              options[arg] = parseFloat(options[arg]);
            }
          } else if (typeof opts[arg] == 'object') {
            if (opts[arg].type == 'array') {
              var sep = opts[arg].separator || opts[arg].sep || ',';
              options[arg] = options[arg].split(sep);
            }
          }
        } else {
          arg = arg.replace('--','');
          arg = replaceAll(arg, '-', '_');
          options[arg] = true;
        }
      } else {
        argv.push(process_argv[i]);
      }
    }
    options.argv = argv;
    return options;
  }
docs: /* Arguments & Options