opennms
Version:
Client API for the OpenNMS network monitoring platform
1 lines • 78.3 kB
JSON
{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/commander/index.js","dependencies":[{"path":"/data/node_modules/commander/index.js","mtime":1553611386420},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992}],"contextDependencies":[],"result":["'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * Module dependencies.\n */\n\nvar EventEmitter = require('events').EventEmitter;\nvar spawn = require('child_process').spawn;\nvar path = require('path');\nvar dirname = path.dirname;\nvar basename = path.basename;\nvar fs = require('fs');\n\n/**\n * Inherit `Command` from `EventEmitter.prototype`.\n */\n\nrequire('util').inherits(Command, EventEmitter);\n\n/**\n * Expose the root command.\n */\n\nexports = module.exports = new Command();\n\n/**\n * Expose `Command`.\n */\n\nexports.Command = Command;\n\n/**\n * Expose `Option`.\n */\n\nexports.Option = Option;\n\n/**\n * Initialize a new `Option` with the given `flags` and `description`.\n *\n * @param {String} flags\n * @param {String} description\n * @api public\n */\n\nfunction Option(flags, description) {\n this.flags = flags;\n this.required = ~flags.indexOf('<');\n this.optional = ~flags.indexOf('[');\n this.bool = !~flags.indexOf('-no-');\n flags = flags.split(/[ ,|]+/);\n if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift();\n this.long = flags.shift();\n this.description = description || '';\n}\n\n/**\n * Return option name.\n *\n * @return {String}\n * @api private\n */\n\nOption.prototype.name = function () {\n return this.long.replace('--', '').replace('no-', '');\n};\n\n/**\n * Return option name, in a camelcase format that can be used\n * as a object attribute key.\n *\n * @return {String}\n * @api private\n */\n\nOption.prototype.attributeName = function () {\n return camelcase(this.name());\n};\n\n/**\n * Check if `arg` matches the short or long flag.\n *\n * @param {String} arg\n * @return {Boolean}\n * @api private\n */\n\nOption.prototype.is = function (arg) {\n return this.short === arg || this.long === arg;\n};\n\n/**\n * Initialize a new `Command`.\n *\n * @param {String} name\n * @api public\n */\n\nfunction Command(name) {\n this.commands = [];\n this.options = [];\n this._execs = {};\n this._allowUnknownOption = false;\n this._args = [];\n this._name = name || '';\n}\n\n/**\n * Add command `name`.\n *\n * The `.action()` callback is invoked when the\n * command `name` is specified via __ARGV__,\n * and the remaining arguments are applied to the\n * function for access.\n *\n * When the `name` is \"*\" an un-matched command\n * will be passed as the first arg, followed by\n * the rest of __ARGV__ remaining.\n *\n * Examples:\n *\n * program\n * .version('0.0.1')\n * .option('-C, --chdir <path>', 'change the working directory')\n * .option('-c, --config <path>', 'set config path. defaults to ./deploy.conf')\n * .option('-T, --no-tests', 'ignore test hook')\n *\n * program\n * .command('setup')\n * .description('run remote setup commands')\n * .action(function() {\n * console.log('setup');\n * });\n *\n * program\n * .command('exec <cmd>')\n * .description('run the given remote command')\n * .action(function(cmd) {\n * console.log('exec \"%s\"', cmd);\n * });\n *\n * program\n * .command('teardown <dir> [otherDirs...]')\n * .description('run teardown commands')\n * .action(function(dir, otherDirs) {\n * console.log('dir \"%s\"', dir);\n * if (otherDirs) {\n * otherDirs.forEach(function (oDir) {\n * console.log('dir \"%s\"', oDir);\n * });\n * }\n * });\n *\n * program\n * .command('*')\n * .description('deploy the given env')\n * .action(function(env) {\n * console.log('deploying \"%s\"', env);\n * });\n *\n * program.parse(process.argv);\n *\n * @param {String} name\n * @param {String} [desc] for git-style sub-commands\n * @return {Command} the new command\n * @api public\n */\n\nCommand.prototype.command = function (name, desc, opts) {\n if ((typeof desc === 'undefined' ? 'undefined' : _typeof(desc)) === 'object' && desc !== null) {\n opts = desc;\n desc = null;\n }\n opts = opts || {};\n var args = name.split(/ +/);\n var cmd = new Command(args.shift());\n\n if (desc) {\n cmd.description(desc);\n this.executables = true;\n this._execs[cmd._name] = true;\n if (opts.isDefault) this.defaultExecutable = cmd._name;\n }\n cmd._noHelp = !!opts.noHelp;\n this.commands.push(cmd);\n cmd.parseExpectedArgs(args);\n cmd.parent = this;\n\n if (desc) return this;\n return cmd;\n};\n\n/**\n * Define argument syntax for the top-level command.\n *\n * @api public\n */\n\nCommand.prototype.arguments = function (desc) {\n return this.parseExpectedArgs(desc.split(/ +/));\n};\n\n/**\n * Add an implicit `help [cmd]` subcommand\n * which invokes `--help` for the given command.\n *\n * @api private\n */\n\nCommand.prototype.addImplicitHelpCommand = function () {\n this.command('help [cmd]', 'display help for [cmd]');\n};\n\n/**\n * Parse expected `args`.\n *\n * For example `[\"[type]\"]` becomes `[{ required: false, name: 'type' }]`.\n *\n * @param {Array} args\n * @return {Command} for chaining\n * @api public\n */\n\nCommand.prototype.parseExpectedArgs = function (args) {\n if (!args.length) return;\n var self = this;\n args.forEach(function (arg) {\n var argDetails = {\n required: false,\n name: '',\n variadic: false\n };\n\n switch (arg[0]) {\n case '<':\n argDetails.required = true;\n argDetails.name = arg.slice(1, -1);\n break;\n case '[':\n argDetails.name = arg.slice(1, -1);\n break;\n }\n\n if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') {\n argDetails.variadic = true;\n argDetails.name = argDetails.name.slice(0, -3);\n }\n if (argDetails.name) {\n self._args.push(argDetails);\n }\n });\n return this;\n};\n\n/**\n * Register callback `fn` for the command.\n *\n * Examples:\n *\n * program\n * .command('help')\n * .description('display verbose help')\n * .action(function() {\n * // output help here\n * });\n *\n * @param {Function} fn\n * @return {Command} for chaining\n * @api public\n */\n\nCommand.prototype.action = function (fn) {\n var self = this;\n var listener = function listener(args, unknown) {\n // Parse any so-far unknown options\n args = args || [];\n unknown = unknown || [];\n\n var parsed = self.parseOptions(unknown);\n\n // Output help if necessary\n outputHelpIfNecessary(self, parsed.unknown);\n\n // If there are still any unknown options, then we simply\n // die, unless someone asked for help, in which case we give it\n // to them, and then we die.\n if (parsed.unknown.length > 0) {\n self.unknownOption(parsed.unknown[0]);\n }\n\n // Leftover arguments need to be pushed back. Fixes issue #56\n if (parsed.args.length) args = parsed.args.concat(args);\n\n self._args.forEach(function (arg, i) {\n if (arg.required && args[i] == null) {\n self.missingArgument(arg.name);\n } else if (arg.variadic) {\n if (i !== self._args.length - 1) {\n self.variadicArgNotLast(arg.name);\n }\n\n args[i] = args.splice(i);\n }\n });\n\n // Always append ourselves to the end of the arguments,\n // to make sure we match the number of arguments the user\n // expects\n if (self._args.length) {\n args[self._args.length] = self;\n } else {\n args.push(self);\n }\n\n fn.apply(self, args);\n };\n var parent = this.parent || this;\n var name = parent === this ? '*' : this._name;\n parent.on('command:' + name, listener);\n if (this._alias) parent.on('command:' + this._alias, listener);\n return this;\n};\n\n/**\n * Define option with `flags`, `description` and optional\n * coercion `fn`.\n *\n * The `flags` string should contain both the short and long flags,\n * separated by comma, a pipe or space. The following are all valid\n * all will output this way when `--help` is used.\n *\n * \"-p, --pepper\"\n * \"-p|--pepper\"\n * \"-p --pepper\"\n *\n * Examples:\n *\n * // simple boolean defaulting to false\n * program.option('-p, --pepper', 'add pepper');\n *\n * --pepper\n * program.pepper\n * // => Boolean\n *\n * // simple boolean defaulting to true\n * program.option('-C, --no-cheese', 'remove cheese');\n *\n * program.cheese\n * // => true\n *\n * --no-cheese\n * program.cheese\n * // => false\n *\n * // required argument\n * program.option('-C, --chdir <path>', 'change the working directory');\n *\n * --chdir /tmp\n * program.chdir\n * // => \"/tmp\"\n *\n * // optional argument\n * program.option('-c, --cheese [type]', 'add cheese [marble]');\n *\n * @param {String} flags\n * @param {String} description\n * @param {Function|*} [fn] or default\n * @param {*} [defaultValue]\n * @return {Command} for chaining\n * @api public\n */\n\nCommand.prototype.option = function (flags, description, fn, defaultValue) {\n var self = this,\n option = new Option(flags, description),\n oname = option.name(),\n name = option.attributeName();\n\n // default as 3rd arg\n if (typeof fn !== 'function') {\n if (fn instanceof RegExp) {\n var regex = fn;\n fn = function fn(val, def) {\n var m = regex.exec(val);\n return m ? m[0] : def;\n };\n } else {\n defaultValue = fn;\n fn = null;\n }\n }\n\n // preassign default value only for --no-*, [optional], or <required>\n if (!option.bool || option.optional || option.required) {\n // when --no-* we make sure default is true\n if (!option.bool) defaultValue = true;\n // preassign only if we have a default\n if (defaultValue !== undefined) {\n self[name] = defaultValue;\n option.defaultValue = defaultValue;\n }\n }\n\n // register the option\n this.options.push(option);\n\n // when it's passed assign the value\n // and conditionally invoke the callback\n this.on('option:' + oname, function (val) {\n // coercion\n if (val !== null && fn) {\n val = fn(val, self[name] === undefined ? defaultValue : self[name]);\n }\n\n // unassigned or bool\n if (typeof self[name] === 'boolean' || typeof self[name] === 'undefined') {\n // if no value, bool true, and we have a default, then use it!\n if (val == null) {\n self[name] = option.bool ? defaultValue || true : false;\n } else {\n self[name] = val;\n }\n } else if (val !== null) {\n // reassign\n self[name] = val;\n }\n });\n\n return this;\n};\n\n/**\n * Allow unknown options on the command line.\n *\n * @param {Boolean} arg if `true` or omitted, no error will be thrown\n * for unknown options.\n * @api public\n */\nCommand.prototype.allowUnknownOption = function (arg) {\n this._allowUnknownOption = arguments.length === 0 || arg;\n return this;\n};\n\n/**\n * Parse `argv`, settings options and invoking commands when defined.\n *\n * @param {Array} argv\n * @return {Command} for chaining\n * @api public\n */\n\nCommand.prototype.parse = function (argv) {\n // implicit help\n if (this.executables) this.addImplicitHelpCommand();\n\n // store raw args\n this.rawArgs = argv;\n\n // guess name\n this._name = this._name || basename(argv[1], '.js');\n\n // github-style sub-commands with no sub-command\n if (this.executables && argv.length < 3 && !this.defaultExecutable) {\n // this user needs help\n argv.push('--help');\n }\n\n // process argv\n var parsed = this.parseOptions(this.normalize(argv.slice(2)));\n var args = this.args = parsed.args;\n\n var result = this.parseArgs(this.args, parsed.unknown);\n\n // executable sub-commands\n var name = result.args[0];\n\n var aliasCommand = null;\n // check alias of sub commands\n if (name) {\n aliasCommand = this.commands.filter(function (command) {\n return command.alias() === name;\n })[0];\n }\n\n if (this._execs[name] && typeof this._execs[name] !== 'function') {\n return this.executeSubCommand(argv, args, parsed.unknown);\n } else if (aliasCommand) {\n // is alias of a subCommand\n args[0] = aliasCommand._name;\n return this.executeSubCommand(argv, args, parsed.unknown);\n } else if (this.defaultExecutable) {\n // use the default subcommand\n args.unshift(this.defaultExecutable);\n return this.executeSubCommand(argv, args, parsed.unknown);\n }\n\n return result;\n};\n\n/**\n * Execute a sub-command executable.\n *\n * @param {Array} argv\n * @param {Array} args\n * @param {Array} unknown\n * @api private\n */\n\nCommand.prototype.executeSubCommand = function (argv, args, unknown) {\n args = args.concat(unknown);\n\n if (!args.length) this.help();\n if (args[0] === 'help' && args.length === 1) this.help();\n\n // <cmd> --help\n if (args[0] === 'help') {\n args[0] = args[1];\n args[1] = '--help';\n }\n\n // executable\n var f = argv[1];\n // name of the subcommand, link `pm-install`\n var bin = basename(f, '.js') + '-' + args[0];\n\n // In case of globally installed, get the base dir where executable\n // subcommand file should be located at\n var baseDir,\n link = fs.lstatSync(f).isSymbolicLink() ? fs.readlinkSync(f) : f;\n\n // when symbolink is relative path\n if (link !== f && link.charAt(0) !== '/') {\n link = path.join(dirname(f), link);\n }\n baseDir = dirname(link);\n\n // prefer local `./<bin>` to bin in the $PATH\n var localBin = path.join(baseDir, bin);\n\n // whether bin file is a js script with explicit `.js` extension\n var isExplicitJS = false;\n if (exists(localBin + '.js')) {\n bin = localBin + '.js';\n isExplicitJS = true;\n } else if (exists(localBin)) {\n bin = localBin;\n }\n\n args = args.slice(1);\n\n var proc;\n if (process.platform !== 'win32') {\n if (isExplicitJS) {\n args.unshift(bin);\n // add executable arguments to spawn\n args = (process.execArgv || []).concat(args);\n\n proc = spawn(process.argv[0], args, { stdio: 'inherit', customFds: [0, 1, 2] });\n } else {\n proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] });\n }\n } else {\n args.unshift(bin);\n proc = spawn(process.execPath, args, { stdio: 'inherit' });\n }\n\n var signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n signals.forEach(function (signal) {\n process.on(signal, function () {\n if (proc.killed === false && proc.exitCode === null) {\n proc.kill(signal);\n }\n });\n });\n proc.on('close', process.exit.bind(process));\n proc.on('error', function (err) {\n if (err.code === 'ENOENT') {\n console.error('\\n %s(1) does not exist, try --help\\n', bin);\n } else if (err.code === 'EACCES') {\n console.error('\\n %s(1) not executable. try chmod or run with root\\n', bin);\n }\n process.exit(1);\n });\n\n // Store the reference to the child process\n this.runningCommand = proc;\n};\n\n/**\n * Normalize `args`, splitting joined short flags. For example\n * the arg \"-abc\" is equivalent to \"-a -b -c\".\n * This also normalizes equal sign and splits \"--abc=def\" into \"--abc def\".\n *\n * @param {Array} args\n * @return {Array}\n * @api private\n */\n\nCommand.prototype.normalize = function (args) {\n var ret = [],\n arg,\n lastOpt,\n index;\n\n for (var i = 0, len = args.length; i < len; ++i) {\n arg = args[i];\n if (i > 0) {\n lastOpt = this.optionFor(args[i - 1]);\n }\n\n if (arg === '--') {\n // Honor option terminator\n ret = ret.concat(args.slice(i));\n break;\n } else if (lastOpt && lastOpt.required) {\n ret.push(arg);\n } else if (arg.length > 1 && arg[0] === '-' && arg[1] !== '-') {\n arg.slice(1).split('').forEach(function (c) {\n ret.push('-' + c);\n });\n } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) {\n ret.push(arg.slice(0, index), arg.slice(index + 1));\n } else {\n ret.push(arg);\n }\n }\n\n return ret;\n};\n\n/**\n * Parse command `args`.\n *\n * When listener(s) are available those\n * callbacks are invoked, otherwise the \"*\"\n * event is emitted and those actions are invoked.\n *\n * @param {Array} args\n * @return {Command} for chaining\n * @api private\n */\n\nCommand.prototype.parseArgs = function (args, unknown) {\n var name;\n\n if (args.length) {\n name = args[0];\n if (this.listeners('command:' + name).length) {\n this.emit('command:' + args.shift(), args, unknown);\n } else {\n this.emit('command:*', args);\n }\n } else {\n outputHelpIfNecessary(this, unknown);\n\n // If there were no args and we have unknown options,\n // then they are extraneous and we need to error.\n if (unknown.length > 0) {\n this.unknownOption(unknown[0]);\n }\n }\n\n return this;\n};\n\n/**\n * Return an option matching `arg` if any.\n *\n * @param {String} arg\n * @return {Option}\n * @api private\n */\n\nCommand.prototype.optionFor = function (arg) {\n for (var i = 0, len = this.options.length; i < len; ++i) {\n if (this.options[i].is(arg)) {\n return this.options[i];\n }\n }\n};\n\n/**\n * Parse options from `argv` returning `argv`\n * void of these options.\n *\n * @param {Array} argv\n * @return {Array}\n * @api public\n */\n\nCommand.prototype.parseOptions = function (argv) {\n var args = [],\n len = argv.length,\n literal,\n option,\n arg;\n\n var unknownOptions = [];\n\n // parse options\n for (var i = 0; i < len; ++i) {\n arg = argv[i];\n\n // literal args after --\n if (literal) {\n args.push(arg);\n continue;\n }\n\n if (arg === '--') {\n literal = true;\n continue;\n }\n\n // find matching Option\n option = this.optionFor(arg);\n\n // option is defined\n if (option) {\n // requires arg\n if (option.required) {\n arg = argv[++i];\n if (arg == null) return this.optionMissingArgument(option);\n this.emit('option:' + option.name(), arg);\n // optional arg\n } else if (option.optional) {\n arg = argv[i + 1];\n if (arg == null || arg[0] === '-' && arg !== '-') {\n arg = null;\n } else {\n ++i;\n }\n this.emit('option:' + option.name(), arg);\n // bool\n } else {\n this.emit('option:' + option.name());\n }\n continue;\n }\n\n // looks like an option\n if (arg.length > 1 && arg[0] === '-') {\n unknownOptions.push(arg);\n\n // If the next argument looks like it might be\n // an argument for this option, we pass it on.\n // If it isn't, then it'll simply be ignored\n if (i + 1 < argv.length && argv[i + 1][0] !== '-') {\n unknownOptions.push(argv[++i]);\n }\n continue;\n }\n\n // arg\n args.push(arg);\n }\n\n return { args: args, unknown: unknownOptions };\n};\n\n/**\n * Return an object containing options as key-value pairs\n *\n * @return {Object}\n * @api public\n */\nCommand.prototype.opts = function () {\n var result = {},\n len = this.options.length;\n\n for (var i = 0; i < len; i++) {\n var key = this.options[i].attributeName();\n result[key] = key === this._versionOptionName ? this._version : this[key];\n }\n return result;\n};\n\n/**\n * Argument `name` is missing.\n *\n * @param {String} name\n * @api private\n */\n\nCommand.prototype.missingArgument = function (name) {\n console.error();\n console.error(\" error: missing required argument `%s'\", name);\n console.error();\n process.exit(1);\n};\n\n/**\n * `Option` is missing an argument, but received `flag` or nothing.\n *\n * @param {String} option\n * @param {String} flag\n * @api private\n */\n\nCommand.prototype.optionMissingArgument = function (option, flag) {\n console.error();\n if (flag) {\n console.error(\" error: option `%s' argument missing, got `%s'\", option.flags, flag);\n } else {\n console.error(\" error: option `%s' argument missing\", option.flags);\n }\n console.error();\n process.exit(1);\n};\n\n/**\n * Unknown option `flag`.\n *\n * @param {String} flag\n * @api private\n */\n\nCommand.prototype.unknownOption = function (flag) {\n if (this._allowUnknownOption) return;\n console.error();\n console.error(\" error: unknown option `%s'\", flag);\n console.error();\n process.exit(1);\n};\n\n/**\n * Variadic argument with `name` is not the last argument as required.\n *\n * @param {String} name\n * @api private\n */\n\nCommand.prototype.variadicArgNotLast = function (name) {\n console.error();\n console.error(\" error: variadic arguments must be last `%s'\", name);\n console.error();\n process.exit(1);\n};\n\n/**\n * Set the program version to `str`.\n *\n * This method auto-registers the \"-V, --version\" flag\n * which will print the version number when passed.\n *\n * @param {String} str\n * @param {String} [flags]\n * @return {Command} for chaining\n * @api public\n */\n\nCommand.prototype.version = function (str, flags) {\n if (arguments.length === 0) return this._version;\n this._version = str;\n flags = flags || '-V, --version';\n var versionOption = new Option(flags, 'output the version number');\n this._versionOptionName = versionOption.long.substr(2) || 'version';\n this.options.push(versionOption);\n this.on('option:' + this._versionOptionName, function () {\n process.stdout.write(str + '\\n');\n process.exit(0);\n });\n return this;\n};\n\n/**\n * Set the description to `str`.\n *\n * @param {String} str\n * @return {String|Command}\n * @api public\n */\n\nCommand.prototype.description = function (str) {\n if (arguments.length === 0) return this._description;\n this._description = str;\n return this;\n};\n\n/**\n * Set an alias for the command\n *\n * @param {String} alias\n * @return {String|Command}\n * @api public\n */\n\nCommand.prototype.alias = function (alias) {\n var command = this;\n if (this.commands.length !== 0) {\n command = this.commands[this.commands.length - 1];\n }\n\n if (arguments.length === 0) return command._alias;\n\n if (alias === command._name) throw new Error('Command alias can\\'t be the same as its name');\n\n command._alias = alias;\n return this;\n};\n\n/**\n * Set / get the command usage `str`.\n *\n * @param {String} str\n * @return {String|Command}\n * @api public\n */\n\nCommand.prototype.usage = function (str) {\n var args = this._args.map(function (arg) {\n return humanReadableArgName(arg);\n });\n\n var usage = '[options]' + (this.commands.length ? ' [command]' : '') + (this._args.length ? ' ' + args.join(' ') : '');\n\n if (arguments.length === 0) return this._usage || usage;\n this._usage = str;\n\n return this;\n};\n\n/**\n * Get or set the name of the command\n *\n * @param {String} str\n * @return {String|Command}\n * @api public\n */\n\nCommand.prototype.name = function (str) {\n if (arguments.length === 0) return this._name;\n this._name = str;\n return this;\n};\n\n/**\n * Return the largest option length.\n *\n * @return {Number}\n * @api private\n */\n\nCommand.prototype.largestOptionLength = function () {\n return this.options.reduce(function (max, option) {\n return Math.max(max, option.flags.length);\n }, 0);\n};\n\n/**\n * Return help for options.\n *\n * @return {String}\n * @api private\n */\n\nCommand.prototype.optionHelp = function () {\n var width = this.largestOptionLength();\n\n // Append the help information\n return this.options.map(function (option) {\n return pad(option.flags, width) + ' ' + option.description + (option.bool && option.defaultValue !== undefined ? ' (default: ' + option.defaultValue + ')' : '');\n }).concat([pad('-h, --help', width) + ' ' + 'output usage information']).join('\\n');\n};\n\n/**\n * Return command help documentation.\n *\n * @return {String}\n * @api private\n */\n\nCommand.prototype.commandHelp = function () {\n if (!this.commands.length) return '';\n\n var commands = this.commands.filter(function (cmd) {\n return !cmd._noHelp;\n }).map(function (cmd) {\n var args = cmd._args.map(function (arg) {\n return humanReadableArgName(arg);\n }).join(' ');\n\n return [cmd._name + (cmd._alias ? '|' + cmd._alias : '') + (cmd.options.length ? ' [options]' : '') + (args ? ' ' + args : ''), cmd._description];\n });\n\n var width = commands.reduce(function (max, command) {\n return Math.max(max, command[0].length);\n }, 0);\n\n return ['', ' Commands:', '', commands.map(function (cmd) {\n var desc = cmd[1] ? ' ' + cmd[1] : '';\n return (desc ? pad(cmd[0], width) : cmd[0]) + desc;\n }).join('\\n').replace(/^/gm, ' '), ''].join('\\n');\n};\n\n/**\n * Return program help documentation.\n *\n * @return {String}\n * @api private\n */\n\nCommand.prototype.helpInformation = function () {\n var desc = [];\n if (this._description) {\n desc = [' ' + this._description, ''];\n }\n\n var cmdName = this._name;\n if (this._alias) {\n cmdName = cmdName + '|' + this._alias;\n }\n var usage = ['', ' Usage: ' + cmdName + ' ' + this.usage(), ''];\n\n var cmds = [];\n var commandHelp = this.commandHelp();\n if (commandHelp) cmds = [commandHelp];\n\n var options = ['', ' Options:', '', '' + this.optionHelp().replace(/^/gm, ' '), ''];\n\n return usage.concat(desc).concat(options).concat(cmds).join('\\n');\n};\n\n/**\n * Output help information for this command\n *\n * @api public\n */\n\nCommand.prototype.outputHelp = function (cb) {\n if (!cb) {\n cb = function cb(passthru) {\n return passthru;\n };\n }\n process.stdout.write(cb(this.helpInformation()));\n this.emit('--help');\n};\n\n/**\n * Output help information and exit.\n *\n * @api public\n */\n\nCommand.prototype.help = function (cb) {\n this.outputHelp(cb);\n process.exit();\n};\n\n/**\n * Camel-case the given `flag`\n *\n * @param {String} flag\n * @return {String}\n * @api private\n */\n\nfunction camelcase(flag) {\n return flag.split('-').reduce(function (str, word) {\n return str + word[0].toUpperCase() + word.slice(1);\n });\n}\n\n/**\n * Pad `str` to `width`.\n *\n * @param {String} str\n * @param {Number} width\n * @return {String}\n * @api private\n */\n\nfunction pad(str, width) {\n var len = Math.max(0, width - str.length);\n return str + Array(len + 1).join(' ');\n}\n\n/**\n * Output help information if necessary\n *\n * @param {Command} command to output help for\n * @param {Array} array of options to search for -h or --help\n * @api private\n */\n\nfunction outputHelpIfNecessary(cmd, options) {\n options = options || [];\n for (var i = 0; i < options.length; i++) {\n if (options[i] === '--help' || options[i] === '-h') {\n cmd.outputHelp();\n process.exit(0);\n }\n }\n}\n\n/**\n * Takes an argument an returns its human readable equivalent for help usage.\n *\n * @param {Object} arg\n * @return {String}\n * @api private\n */\n\nfunction humanReadableArgName(arg) {\n var nameOutput = arg.name + (arg.variadic === true ? '...' : '');\n\n return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\n// for versions before node v0.8 when there weren't `fs.existsSync`\nfunction exists(file) {\n try {\n if (fs.statSync(file).isFile()) {\n return true;\n }\n } catch (e) {\n return false;\n }\n}",{"version":3,"sources":["node_modules/commander/index.js"],"names":["EventEmitter","require","spawn","path","dirname","basename","fs","inherits","Command","exports","module","Option","flags","description","required","indexOf","optional","bool","split","length","test","short","shift","long","prototype","name","replace","attributeName","camelcase","is","arg","commands","options","_execs","_allowUnknownOption","_args","_name","command","desc","opts","args","cmd","executables","isDefault","defaultExecutable","_noHelp","noHelp","push","parseExpectedArgs","parent","arguments","addImplicitHelpCommand","self","forEach","argDetails","variadic","slice","action","fn","listener","unknown","parsed","parseOptions","outputHelpIfNecessary","unknownOption","concat","i","missingArgument","variadicArgNotLast","splice","apply","on","_alias","option","defaultValue","oname","RegExp","regex","val","def","m","exec","undefined","allowUnknownOption","parse","argv","rawArgs","normalize","result","parseArgs","aliasCommand","filter","alias","executeSubCommand","unshift","help","f","bin","baseDir","link","lstatSync","isSymbolicLink","readlinkSync","charAt","join","localBin","isExplicitJS","exists","proc","process","platform","execArgv","stdio","customFds","execPath","signals","signal","killed","exitCode","kill","exit","bind","err","code","console","error","runningCommand","ret","lastOpt","index","len","optionFor","c","listeners","emit","literal","unknownOptions","optionMissingArgument","key","_versionOptionName","_version","flag","version","str","versionOption","substr","stdout","write","_description","Error","usage","map","humanReadableArgName","_usage","largestOptionLength","reduce","max","Math","optionHelp","width","pad","commandHelp","helpInformation","cmdName","cmds","outputHelp","cb","passthru","word","toUpperCase","Array","nameOutput","file","statSync","isFile","e"],"mappings":"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