Index: node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js |
diff --git a/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..adecf654a96e7ca6b10e2abcecec67c41bf36a50 |
--- /dev/null |
+++ b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js |
@@ -0,0 +1,148 @@ |
+/** internal |
+ * class ActionSubparsers |
+ * |
+ * Support the creation of such sub-commands with the addSubparsers() |
+ * |
+ * This class inherited from [[Action]] |
+ **/ |
+'use strict'; |
+ |
+var util = require('util'); |
+var format = require('util').format; |
+var _ = require('underscore'); |
+ |
+ |
+var Action = require('../action'); |
+ |
+// Constants |
+var $$ = require('../const'); |
+ |
+// Errors |
+var argumentErrorHelper = require('../argument/error'); |
+ |
+ |
+/*:nodoc:* |
+ * new ChoicesPseudoAction(name, help) |
+ * |
+ * Create pseudo action for correct help text |
+ * |
+ **/ |
+var ChoicesPseudoAction = function (name, help) { |
+ var options = { |
+ optionStrings: [], |
+ dest: name, |
+ help: help |
+ }; |
+ |
+ Action.call(this, options); |
+}; |
+util.inherits(ChoicesPseudoAction, Action); |
+ |
+/** |
+ * new ActionSubparsers(options) |
+ * - options (object): options hash see [[Action.new]] |
+ * |
+ **/ |
+var ActionSubparsers = module.exports = function ActionSubparsers(options) { |
+ options = options || {}; |
+ options.dest = options.dest || $$.SUPPRESS; |
+ options.nargs = $$.PARSER; |
+ |
+ this.debug = (options.debug === true); |
+ |
+ this._progPrefix = options.prog; |
+ this._parserClass = options.parserClass; |
+ this._nameParserMap = {}; |
+ this._choicesActions = []; |
+ |
+ options.choices = this._nameParserMap; |
+ Action.call(this, options); |
+}; |
+util.inherits(ActionSubparsers, Action); |
+ |
+/*:nodoc:* |
+ * ActionSubparsers#addParser(name, options) -> ArgumentParser |
+ * - name (string): sub-command name |
+ * - options (object): see [[ArgumentParser.new]] |
+ * |
+ * Note: |
+ * addParser supports an additional aliases option, |
+ * which allows multiple strings to refer to the same subparser. |
+ * This example, like svn, aliases co as a shorthand for checkout |
+ * |
+ **/ |
+ActionSubparsers.prototype.addParser = function (name, options) { |
+ var parser; |
+ |
+ var self = this; |
+ |
+ options = options || {}; |
+ |
+ options.debug = (this.debug === true); |
+ |
+ // set program from the existing prefix |
+ if (!options.prog) { |
+ options.prog = this._progPrefix + ' ' + name; |
+ } |
+ |
+ var aliases = options.aliases || []; |
+ |
+ // create a pseudo-action to hold the choice help |
+ if (!!options.help || _.isString(options.help)) { |
+ var help = options.help; |
+ delete options.help; |
+ |
+ var choiceAction = new ChoicesPseudoAction(name, help); |
+ this._choicesActions.push(choiceAction); |
+ } |
+ |
+ // create the parser and add it to the map |
+ parser = new this._parserClass(options); |
+ this._nameParserMap[name] = parser; |
+ |
+ // make parser available under aliases also |
+ aliases.forEach(function (alias) { |
+ self._nameParserMap[alias] = parser; |
+ }); |
+ |
+ return parser; |
+}; |
+ |
+ActionSubparsers.prototype._getSubactions = function () { |
+ return this._choicesActions; |
+}; |
+ |
+/*:nodoc:* |
+ * ActionSubparsers#call(parser, namespace, values, optionString) -> Void |
+ * - parser (ArgumentParser): current parser |
+ * - namespace (Namespace): namespace for output data |
+ * - values (Array): parsed values |
+ * - optionString (Array): input option string(not parsed) |
+ * |
+ * Call the action. Parse input aguments |
+ **/ |
+ActionSubparsers.prototype.call = function (parser, namespace, values) { |
+ var parserName = values[0]; |
+ var argStrings = values.slice(1); |
+ |
+ // set the parser name if requested |
+ if (this.dest !== $$.SUPPRESS) { |
+ namespace[this.dest] = parserName; |
+ } |
+ |
+ // select the parser |
+ if (!!this._nameParserMap[parserName]) { |
+ parser = this._nameParserMap[parserName]; |
+ } else { |
+ throw argumentErrorHelper(format( |
+ 'Unknown parser "%s" (choices: [%s]).', |
+ parserName, |
+ _.keys(this._nameParserMap).join(', ') |
+ )); |
+ } |
+ |
+ // parse all the remaining options into the namespace |
+ parser.parseArgs(argStrings, namespace); |
+}; |
+ |
+ |