Commit d3bc79c79662ef926ed90cea8226813961a5b6fb

Authored by bichao.dong
1 parent 5fb9eca4

remove node_modules

Showing 73 changed files with 0 additions and 4691 deletions

Too many changes to show.

To preserve performance only 73 of 3766 files are displayed.

images/node_modules/.bin/cake deleted 120000 → 0
1   -../coffee-script/bin/cake
2 0 \ No newline at end of file
images/node_modules/.bin/coffee deleted 120000 → 0
1   -../coffee-script/bin/coffee
2 0 \ No newline at end of file
images/node_modules/.bin/esparse deleted 120000 → 0
1   -../esprima/bin/esparse.js
2 0 \ No newline at end of file
images/node_modules/.bin/esvalidate deleted 120000 → 0
1   -../esprima/bin/esvalidate.js
2 0 \ No newline at end of file
images/node_modules/.bin/grunt-glue deleted 120000 → 0
1   -../grunt-glue/bin/grunt-glue
2 0 \ No newline at end of file
images/node_modules/.bin/gulp deleted 120000 → 0
1   -../gulp/bin/gulp.js
2 0 \ No newline at end of file
images/node_modules/.bin/js-yaml deleted 120000 → 0
1   -../js-yaml/bin/js-yaml.js
2 0 \ No newline at end of file
images/node_modules/.bin/mkdirp deleted 120000 → 0
1   -../mkdirp/bin/cmd.js
2 0 \ No newline at end of file
images/node_modules/.bin/nopt deleted 120000 → 0
1   -../nopt/bin/nopt.js
2 0 \ No newline at end of file
images/node_modules/.bin/rimraf deleted 120000 → 0
1   -../rimraf/bin.js
2 0 \ No newline at end of file
images/node_modules/.bin/semver deleted 120000 → 0
1   -../semver/bin/semver
2 0 \ No newline at end of file
images/node_modules/.bin/strip-indent deleted 120000 → 0
1   -../strip-indent/cli.js
2 0 \ No newline at end of file
images/node_modules/.bin/user-home deleted 120000 → 0
1   -../user-home/cli.js
2 0 \ No newline at end of file
images/node_modules/.bin/which deleted 120000 → 0
1   -../which/bin/which
2 0 \ No newline at end of file
images/node_modules/abbrev/.npmignore deleted 100644 → 0
1   -.nyc_output
2   -nyc_output
3   -node_modules
4   -coverage
images/node_modules/abbrev/.travis.yml deleted 100644 → 0
1   -language: node_js
2   -node_js:
3   - - '0.10'
4   - - '0.12'
5   - - 'iojs'
images/node_modules/abbrev/CONTRIBUTING.md deleted 100644 → 0
1   - To get started, <a
2   - href="http://www.clahub.com/agreements/isaacs/abbrev-js">sign the
3   - Contributor License Agreement</a>.
images/node_modules/abbrev/LICENSE deleted 100644 → 0
1   -The ISC License
2   -
3   -Copyright (c) Isaac Z. Schlueter and Contributors
4   -
5   -Permission to use, copy, modify, and/or distribute this software for any
6   -purpose with or without fee is hereby granted, provided that the above
7   -copyright notice and this permission notice appear in all copies.
8   -
9   -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10   -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11   -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12   -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13   -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14   -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15   -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
images/node_modules/abbrev/README.md deleted 100644 → 0
1   -# abbrev-js
2   -
3   -Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev).
4   -
5   -Usage:
6   -
7   - var abbrev = require("abbrev");
8   - abbrev("foo", "fool", "folding", "flop");
9   -
10   - // returns:
11   - { fl: 'flop'
12   - , flo: 'flop'
13   - , flop: 'flop'
14   - , fol: 'folding'
15   - , fold: 'folding'
16   - , foldi: 'folding'
17   - , foldin: 'folding'
18   - , folding: 'folding'
19   - , foo: 'foo'
20   - , fool: 'fool'
21   - }
22   -
23   -This is handy for command-line scripts, or other cases where you want to be able to accept shorthands.
images/node_modules/abbrev/abbrev.js deleted 100644 → 0
1   -
2   -module.exports = exports = abbrev.abbrev = abbrev
3   -
4   -abbrev.monkeyPatch = monkeyPatch
5   -
6   -function monkeyPatch () {
7   - Object.defineProperty(Array.prototype, 'abbrev', {
8   - value: function () { return abbrev(this) },
9   - enumerable: false, configurable: true, writable: true
10   - })
11   -
12   - Object.defineProperty(Object.prototype, 'abbrev', {
13   - value: function () { return abbrev(Object.keys(this)) },
14   - enumerable: false, configurable: true, writable: true
15   - })
16   -}
17   -
18   -function abbrev (list) {
19   - if (arguments.length !== 1 || !Array.isArray(list)) {
20   - list = Array.prototype.slice.call(arguments, 0)
21   - }
22   - for (var i = 0, l = list.length, args = [] ; i < l ; i ++) {
23   - args[i] = typeof list[i] === "string" ? list[i] : String(list[i])
24   - }
25   -
26   - // sort them lexicographically, so that they're next to their nearest kin
27   - args = args.sort(lexSort)
28   -
29   - // walk through each, seeing how much it has in common with the next and previous
30   - var abbrevs = {}
31   - , prev = ""
32   - for (var i = 0, l = args.length ; i < l ; i ++) {
33   - var current = args[i]
34   - , next = args[i + 1] || ""
35   - , nextMatches = true
36   - , prevMatches = true
37   - if (current === next) continue
38   - for (var j = 0, cl = current.length ; j < cl ; j ++) {
39   - var curChar = current.charAt(j)
40   - nextMatches = nextMatches && curChar === next.charAt(j)
41   - prevMatches = prevMatches && curChar === prev.charAt(j)
42   - if (!nextMatches && !prevMatches) {
43   - j ++
44   - break
45   - }
46   - }
47   - prev = current
48   - if (j === cl) {
49   - abbrevs[current] = current
50   - continue
51   - }
52   - for (var a = current.substr(0, j) ; j <= cl ; j ++) {
53   - abbrevs[a] = current
54   - a += current.charAt(j)
55   - }
56   - }
57   - return abbrevs
58   -}
59   -
60   -function lexSort (a, b) {
61   - return a === b ? 0 : a > b ? 1 : -1
62   -}
images/node_modules/abbrev/package.json deleted 100644 → 0
1   -{
2   - "_args": [
3   - [
4   - "abbrev@1",
5   - "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/nopt"
6   - ]
7   - ],
8   - "_from": "abbrev@>=1.0.0 <2.0.0",
9   - "_id": "abbrev@1.0.7",
10   - "_inCache": true,
11   - "_installable": true,
12   - "_location": "/abbrev",
13   - "_nodeVersion": "2.0.1",
14   - "_npmUser": {
15   - "email": "isaacs@npmjs.com",
16   - "name": "isaacs"
17   - },
18   - "_npmVersion": "2.10.1",
19   - "_phantomChildren": {},
20   - "_requested": {
21   - "name": "abbrev",
22   - "raw": "abbrev@1",
23   - "rawSpec": "1",
24   - "scope": null,
25   - "spec": ">=1.0.0 <2.0.0",
26   - "type": "range"
27   - },
28   - "_requiredBy": [
29   - "/nopt"
30   - ],
31   - "_resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz",
32   - "_shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
33   - "_shrinkwrap": null,
34   - "_spec": "abbrev@1",
35   - "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/nopt",
36   - "author": {
37   - "email": "i@izs.me",
38   - "name": "Isaac Z. Schlueter"
39   - },
40   - "bugs": {
41   - "url": "https://github.com/isaacs/abbrev-js/issues"
42   - },
43   - "dependencies": {},
44   - "description": "Like ruby's abbrev module, but in js",
45   - "devDependencies": {
46   - "tap": "^1.2.0"
47   - },
48   - "directories": {},
49   - "dist": {
50   - "shasum": "5b6035b2ee9d4fb5cf859f08a9be81b208491843",
51   - "tarball": "http://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
52   - },
53   - "gitHead": "821d09ce7da33627f91bbd8ed631497ed6f760c2",
54   - "homepage": "https://github.com/isaacs/abbrev-js#readme",
55   - "license": "ISC",
56   - "main": "abbrev.js",
57   - "maintainers": [
58   - {
59   - "name": "isaacs",
60   - "email": "i@izs.me"
61   - }
62   - ],
63   - "name": "abbrev",
64   - "optionalDependencies": {},
65   - "readme": "ERROR: No README data found!",
66   - "repository": {
67   - "type": "git",
68   - "url": "git+ssh://git@github.com/isaacs/abbrev-js.git"
69   - },
70   - "scripts": {
71   - "test": "tap test.js --cov"
72   - },
73   - "version": "1.0.7"
74   -}
images/node_modules/abbrev/test.js deleted 100644 → 0
1   -var abbrev = require('./abbrev.js')
2   -var assert = require("assert")
3   -var util = require("util")
4   -
5   -console.log("TAP version 13")
6   -var count = 0
7   -
8   -function test (list, expect) {
9   - count++
10   - var actual = abbrev(list)
11   - assert.deepEqual(actual, expect,
12   - "abbrev("+util.inspect(list)+") === " + util.inspect(expect) + "\n"+
13   - "actual: "+util.inspect(actual))
14   - actual = abbrev.apply(exports, list)
15   - assert.deepEqual(abbrev.apply(exports, list), expect,
16   - "abbrev("+list.map(JSON.stringify).join(",")+") === " + util.inspect(expect) + "\n"+
17   - "actual: "+util.inspect(actual))
18   - console.log('ok - ' + list.join(' '))
19   -}
20   -
21   -test([ "ruby", "ruby", "rules", "rules", "rules" ],
22   -{ rub: 'ruby'
23   -, ruby: 'ruby'
24   -, rul: 'rules'
25   -, rule: 'rules'
26   -, rules: 'rules'
27   -})
28   -test(["fool", "foom", "pool", "pope"],
29   -{ fool: 'fool'
30   -, foom: 'foom'
31   -, poo: 'pool'
32   -, pool: 'pool'
33   -, pop: 'pope'
34   -, pope: 'pope'
35   -})
36   -test(["a", "ab", "abc", "abcd", "abcde", "acde"],
37   -{ a: 'a'
38   -, ab: 'ab'
39   -, abc: 'abc'
40   -, abcd: 'abcd'
41   -, abcde: 'abcde'
42   -, ac: 'acde'
43   -, acd: 'acde'
44   -, acde: 'acde'
45   -})
46   -
47   -console.log("1..%d", count)
images/node_modules/ansi-regex/index.js deleted 100644 → 0
1   -'use strict';
2   -module.exports = function () {
3   - return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
4   -};
images/node_modules/ansi-regex/license deleted 100644 → 0
1   -The MIT License (MIT)
2   -
3   -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
4   -
5   -Permission is hereby granted, free of charge, to any person obtaining a copy
6   -of this software and associated documentation files (the "Software"), to deal
7   -in the Software without restriction, including without limitation the rights
8   -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9   -copies of the Software, and to permit persons to whom the Software is
10   -furnished to do so, subject to the following conditions:
11   -
12   -The above copyright notice and this permission notice shall be included in
13   -all copies or substantial portions of the Software.
14   -
15   -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16   -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17   -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18   -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19   -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20   -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21   -THE SOFTWARE.
images/node_modules/ansi-regex/package.json deleted 100644 → 0
1   -{
2   - "_args": [
3   - [
4   - "ansi-regex@^2.0.0",
5   - "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/has-ansi"
6   - ]
7   - ],
8   - "_from": "ansi-regex@>=2.0.0 <3.0.0",
9   - "_id": "ansi-regex@2.0.0",
10   - "_inCache": true,
11   - "_installable": true,
12   - "_location": "/ansi-regex",
13   - "_nodeVersion": "0.12.5",
14   - "_npmUser": {
15   - "email": "sindresorhus@gmail.com",
16   - "name": "sindresorhus"
17   - },
18   - "_npmVersion": "2.11.2",
19   - "_phantomChildren": {},
20   - "_requested": {
21   - "name": "ansi-regex",
22   - "raw": "ansi-regex@^2.0.0",
23   - "rawSpec": "^2.0.0",
24   - "scope": null,
25   - "spec": ">=2.0.0 <3.0.0",
26   - "type": "range"
27   - },
28   - "_requiredBy": [
29   - "/has-ansi",
30   - "/strip-ansi"
31   - ],
32   - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
33   - "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
34   - "_shrinkwrap": null,
35   - "_spec": "ansi-regex@^2.0.0",
36   - "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/has-ansi",
37   - "author": {
38   - "email": "sindresorhus@gmail.com",
39   - "name": "Sindre Sorhus",
40   - "url": "sindresorhus.com"
41   - },
42   - "bugs": {
43   - "url": "https://github.com/sindresorhus/ansi-regex/issues"
44   - },
45   - "dependencies": {},
46   - "description": "Regular expression for matching ANSI escape codes",
47   - "devDependencies": {
48   - "mocha": "*"
49   - },
50   - "directories": {},
51   - "dist": {
52   - "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
53   - "tarball": "http://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
54   - },
55   - "engines": {
56   - "node": ">=0.10.0"
57   - },
58   - "files": [
59   - "index.js"
60   - ],
61   - "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f",
62   - "homepage": "https://github.com/sindresorhus/ansi-regex",
63   - "keywords": [
64   - "256",
65   - "ansi",
66   - "cli",
67   - "color",
68   - "colors",
69   - "colour",
70   - "command-line",
71   - "console",
72   - "escape",
73   - "find",
74   - "formatting",
75   - "match",
76   - "pattern",
77   - "re",
78   - "regex",
79   - "regexp",
80   - "rgb",
81   - "shell",
82   - "string",
83   - "styles",
84   - "terminal",
85   - "test",
86   - "text",
87   - "tty",
88   - "xterm"
89   - ],
90   - "license": "MIT",
91   - "maintainers": [
92   - {
93   - "name": "sindresorhus",
94   - "email": "sindresorhus@gmail.com"
95   - },
96   - {
97   - "name": "jbnicolai",
98   - "email": "jappelman@xebia.com"
99   - }
100   - ],
101   - "name": "ansi-regex",
102   - "optionalDependencies": {},
103   - "readme": "ERROR: No README data found!",
104   - "repository": {
105   - "type": "git",
106   - "url": "git+https://github.com/sindresorhus/ansi-regex.git"
107   - },
108   - "scripts": {
109   - "test": "mocha test/test.js",
110   - "view-supported": "node test/viewCodes.js"
111   - },
112   - "version": "2.0.0"
113   -}
images/node_modules/ansi-regex/readme.md deleted 100644 → 0
1   -# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex)
2   -
3   -> Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
4   -
5   -
6   -## Install
7   -
8   -```
9   -$ npm install --save ansi-regex
10   -```
11   -
12   -
13   -## Usage
14   -
15   -```js
16   -var ansiRegex = require('ansi-regex');
17   -
18   -ansiRegex().test('\u001b[4mcake\u001b[0m');
19   -//=> true
20   -
21   -ansiRegex().test('cake');
22   -//=> false
23   -
24   -'\u001b[4mcake\u001b[0m'.match(ansiRegex());
25   -//=> ['\u001b[4m', '\u001b[0m']
26   -```
27   -
28   -
29   -## License
30   -
31   -MIT © [Sindre Sorhus](http://sindresorhus.com)
images/node_modules/ansi-styles/index.js deleted 100644 → 0
1   -'use strict';
2   -
3   -function assembleStyles () {
4   - var styles = {
5   - modifiers: {
6   - reset: [0, 0],
7   - bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
8   - dim: [2, 22],
9   - italic: [3, 23],
10   - underline: [4, 24],
11   - inverse: [7, 27],
12   - hidden: [8, 28],
13   - strikethrough: [9, 29]
14   - },
15   - colors: {
16   - black: [30, 39],
17   - red: [31, 39],
18   - green: [32, 39],
19   - yellow: [33, 39],
20   - blue: [34, 39],
21   - magenta: [35, 39],
22   - cyan: [36, 39],
23   - white: [37, 39],
24   - gray: [90, 39]
25   - },
26   - bgColors: {
27   - bgBlack: [40, 49],
28   - bgRed: [41, 49],
29   - bgGreen: [42, 49],
30   - bgYellow: [43, 49],
31   - bgBlue: [44, 49],
32   - bgMagenta: [45, 49],
33   - bgCyan: [46, 49],
34   - bgWhite: [47, 49]
35   - }
36   - };
37   -
38   - // fix humans
39   - styles.colors.grey = styles.colors.gray;
40   -
41   - Object.keys(styles).forEach(function (groupName) {
42   - var group = styles[groupName];
43   -
44   - Object.keys(group).forEach(function (styleName) {
45   - var style = group[styleName];
46   -
47   - styles[styleName] = group[styleName] = {
48   - open: '\u001b[' + style[0] + 'm',
49   - close: '\u001b[' + style[1] + 'm'
50   - };
51   - });
52   -
53   - Object.defineProperty(styles, groupName, {
54   - value: group,
55   - enumerable: false
56   - });
57   - });
58   -
59   - return styles;
60   -}
61   -
62   -Object.defineProperty(module, 'exports', {
63   - enumerable: true,
64   - get: assembleStyles
65   -});
images/node_modules/ansi-styles/license deleted 100644 → 0
1   -The MIT License (MIT)
2   -
3   -Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
4   -
5   -Permission is hereby granted, free of charge, to any person obtaining a copy
6   -of this software and associated documentation files (the "Software"), to deal
7   -in the Software without restriction, including without limitation the rights
8   -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9   -copies of the Software, and to permit persons to whom the Software is
10   -furnished to do so, subject to the following conditions:
11   -
12   -The above copyright notice and this permission notice shall be included in
13   -all copies or substantial portions of the Software.
14   -
15   -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16   -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17   -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18   -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19   -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20   -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21   -THE SOFTWARE.
images/node_modules/ansi-styles/package.json deleted 100644 → 0
1   -{
2   - "_args": [
3   - [
4   - "ansi-styles@^2.1.0",
5   - "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/chalk"
6   - ]
7   - ],
8   - "_from": "ansi-styles@>=2.1.0 <3.0.0",
9   - "_id": "ansi-styles@2.1.0",
10   - "_inCache": true,
11   - "_installable": true,
12   - "_location": "/ansi-styles",
13   - "_nodeVersion": "0.12.4",
14   - "_npmUser": {
15   - "email": "jappelman@xebia.com",
16   - "name": "jbnicolai"
17   - },
18   - "_npmVersion": "2.10.1",
19   - "_phantomChildren": {},
20   - "_requested": {
21   - "name": "ansi-styles",
22   - "raw": "ansi-styles@^2.1.0",
23   - "rawSpec": "^2.1.0",
24   - "scope": null,
25   - "spec": ">=2.1.0 <3.0.0",
26   - "type": "range"
27   - },
28   - "_requiredBy": [
29   - "/chalk"
30   - ],
31   - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz",
32   - "_shasum": "990f747146927b559a932bf92959163d60c0d0e2",
33   - "_shrinkwrap": null,
34   - "_spec": "ansi-styles@^2.1.0",
35   - "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/chalk",
36   - "author": {
37   - "email": "sindresorhus@gmail.com",
38   - "name": "Sindre Sorhus",
39   - "url": "sindresorhus.com"
40   - },
41   - "bugs": {
42   - "url": "https://github.com/chalk/ansi-styles/issues"
43   - },
44   - "dependencies": {},
45   - "description": "ANSI escape codes for styling strings in the terminal",
46   - "devDependencies": {
47   - "mocha": "*"
48   - },
49   - "directories": {},
50   - "dist": {
51   - "shasum": "990f747146927b559a932bf92959163d60c0d0e2",
52   - "tarball": "http://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz"
53   - },
54   - "engines": {
55   - "node": ">=0.10.0"
56   - },
57   - "files": [
58   - "index.js"
59   - ],
60   - "gitHead": "18421cbe4a2d93359ec2599a894f704be126d066",
61   - "homepage": "https://github.com/chalk/ansi-styles",
62   - "keywords": [
63   - "256",
64   - "ansi",
65   - "cli",
66   - "color",
67   - "colors",
68   - "colour",
69   - "command-line",
70   - "console",
71   - "escape",
72   - "formatting",
73   - "log",
74   - "logging",
75   - "rgb",
76   - "shell",
77   - "string",
78   - "styles",
79   - "terminal",
80   - "text",
81   - "tty",
82   - "xterm"
83   - ],
84   - "license": "MIT",
85   - "maintainers": [
86   - {
87   - "name": "sindresorhus",
88   - "email": "sindresorhus@gmail.com"
89   - },
90   - {
91   - "name": "jbnicolai",
92   - "email": "jappelman@xebia.com"
93   - }
94   - ],
95   - "name": "ansi-styles",
96   - "optionalDependencies": {},
97   - "readme": "ERROR: No README data found!",
98   - "repository": {
99   - "type": "git",
100   - "url": "git+https://github.com/chalk/ansi-styles.git"
101   - },
102   - "scripts": {
103   - "test": "mocha"
104   - },
105   - "version": "2.1.0"
106   -}
images/node_modules/ansi-styles/readme.md deleted 100644 → 0
1   -# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
2   -
3   -> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
4   -
5   -You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
6   -
7   -![](screenshot.png)
8   -
9   -
10   -## Install
11   -
12   -```
13   -$ npm install --save ansi-styles
14   -```
15   -
16   -
17   -## Usage
18   -
19   -```js
20   -var ansi = require('ansi-styles');
21   -
22   -console.log(ansi.green.open + 'Hello world!' + ansi.green.close);
23   -```
24   -
25   -
26   -## API
27   -
28   -Each style has an `open` and `close` property.
29   -
30   -
31   -## Styles
32   -
33   -### Modifiers
34   -
35   -- `reset`
36   -- `bold`
37   -- `dim`
38   -- `italic` *(not widely supported)*
39   -- `underline`
40   -- `inverse`
41   -- `hidden`
42   -- `strikethrough` *(not widely supported)*
43   -
44   -### Colors
45   -
46   -- `black`
47   -- `red`
48   -- `green`
49   -- `yellow`
50   -- `blue`
51   -- `magenta`
52   -- `cyan`
53   -- `white`
54   -- `gray`
55   -
56   -### Background colors
57   -
58   -- `bgBlack`
59   -- `bgRed`
60   -- `bgGreen`
61   -- `bgYellow`
62   -- `bgBlue`
63   -- `bgMagenta`
64   -- `bgCyan`
65   -- `bgWhite`
66   -
67   -
68   -## Advanced usage
69   -
70   -By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
71   -
72   -- `ansi.modifiers`
73   -- `ansi.colors`
74   -- `ansi.bgColors`
75   -
76   -
77   -###### Example
78   -
79   -```js
80   -console.log(ansi.colors.green.open);
81   -```
82   -
83   -
84   -## License
85   -
86   -MIT © [Sindre Sorhus](http://sindresorhus.com)
images/node_modules/archy/.travis.yml deleted 100644 → 0
1   -language: node_js
2   -node_js:
3   - - 0.6
4   - - 0.8
images/node_modules/archy/LICENSE deleted 100644 → 0
1   -This software is released under the MIT license:
2   -
3   -Permission is hereby granted, free of charge, to any person obtaining a copy of
4   -this software and associated documentation files (the "Software"), to deal in
5   -the Software without restriction, including without limitation the rights to
6   -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7   -the Software, and to permit persons to whom the Software is furnished to do so,
8   -subject to the following conditions:
9   -
10   -The above copyright notice and this permission notice shall be included in all
11   -copies or substantial portions of the Software.
12   -
13   -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14   -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15   -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16   -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17   -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18   -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
images/node_modules/archy/examples/beep.js deleted 100644 → 0
1   -var archy = require('../');
2   -var s = archy({
3   - label : 'beep',
4   - nodes : [
5   - 'ity',
6   - {
7   - label : 'boop',
8   - nodes : [
9   - {
10   - label : 'o_O',
11   - nodes : [
12   - {
13   - label : 'oh',
14   - nodes : [ 'hello', 'puny' ]
15   - },
16   - 'human'
17   - ]
18   - },
19   - 'party\ntime!'
20   - ]
21   - }
22   - ]
23   -});
24   -console.log(s);
images/node_modules/archy/examples/multi_line.js deleted 100644 → 0
1   -var archy = require('../');
2   -
3   -var s = archy({
4   - label : 'beep\none\ntwo',
5   - nodes : [
6   - 'ity',
7   - {
8   - label : 'boop',
9   - nodes : [
10   - {
11   - label : 'o_O\nwheee',
12   - nodes : [
13   - {
14   - label : 'oh',
15   - nodes : [ 'hello', 'puny\nmeat' ]
16   - },
17   - 'creature'
18   - ]
19   - },
20   - 'party\ntime!'
21   - ]
22   - }
23   - ]
24   -});
25   -console.log(s);
images/node_modules/archy/index.js deleted 100644 → 0
1   -module.exports = function archy (obj, prefix, opts) {
2   - if (prefix === undefined) prefix = '';
3   - if (!opts) opts = {};
4   - var chr = function (s) {
5   - var chars = {
6   - '│' : '|',
7   - '└' : '`',
8   - '├' : '+',
9   - '─' : '-',
10   - '┬' : '-'
11   - };
12   - return opts.unicode === false ? chars[s] : s;
13   - };
14   -
15   - if (typeof obj === 'string') obj = { label : obj };
16   -
17   - var nodes = obj.nodes || [];
18   - var lines = (obj.label || '').split('\n');
19   - var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
20   -
21   - return prefix
22   - + lines.join(splitter) + '\n'
23   - + nodes.map(function (node, ix) {
24   - var last = ix === nodes.length - 1;
25   - var more = node.nodes && node.nodes.length;
26   - var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
27   -
28   - return prefix
29   - + (last ? chr('└') : chr('├')) + chr('─')
30   - + (more ? chr('┬') : chr('─')) + ' '
31   - + archy(node, prefix_, opts).slice(prefix.length + 2)
32   - ;
33   - }).join('')
34   - ;
35   -};
images/node_modules/archy/package.json deleted 100644 → 0
1   -{
2   - "_args": [
3   - [
4   - "archy@^1.0.0",
5   - "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/gulp"
6   - ]
7   - ],
8   - "_from": "archy@>=1.0.0 <2.0.0",
9   - "_id": "archy@1.0.0",
10   - "_inCache": true,
11   - "_installable": true,
12   - "_location": "/archy",
13   - "_npmUser": {
14   - "email": "mail@substack.net",
15   - "name": "substack"
16   - },
17   - "_npmVersion": "1.4.25",
18   - "_phantomChildren": {},
19   - "_requested": {
20   - "name": "archy",
21   - "raw": "archy@^1.0.0",
22   - "rawSpec": "^1.0.0",
23   - "scope": null,
24   - "spec": ">=1.0.0 <2.0.0",
25   - "type": "range"
26   - },
27   - "_requiredBy": [
28   - "/gulp"
29   - ],
30   - "_resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
31   - "_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
32   - "_shrinkwrap": null,
33   - "_spec": "archy@^1.0.0",
34   - "_where": "/Users/sam/Documents/dili_git_project/static-pnr/images/2.3.0/node_modules/gulp",
35   - "author": {
36   - "email": "mail@substack.net",
37   - "name": "James Halliday",
38   - "url": "http://substack.net"
39   - },
40   - "bugs": {
41   - "url": "https://github.com/substack/node-archy/issues"
42   - },
43   - "dependencies": {},
44   - "description": "render nested hierarchies `npm ls` style with unicode pipes",
45   - "devDependencies": {
46   - "tap": "~0.3.3",
47   - "tape": "~0.1.1"
48   - },
49   - "directories": {},
50   - "dist": {
51   - "shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
52   - "tarball": "http://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
53   - },
54   - "gitHead": "30223c16191e877bf027b15b12daf077b9b55b84",
55   - "homepage": "https://github.com/substack/node-archy",
56   - "keywords": [
57   - "hierarchy",
58   - "npm ls",
59   - "pretty",
60   - "print",
61   - "unicode"
62   - ],
63   - "license": "MIT",
64   - "main": "index.js",
65   - "maintainers": [
66   - {
67   - "name": "substack",
68   - "email": "mail@substack.net"
69   - }
70   - ],
71   - "name": "archy",
72   - "optionalDependencies": {},
73   - "readme": "ERROR: No README data found!",
74   - "repository": {
75   - "type": "git",
76   - "url": "git+ssh://git@github.com/substack/node-archy.git"
77   - },
78   - "scripts": {
79   - "test": "tap test"
80   - },
81   - "testling": {
82   - "browsers": {
83   - "chrome": [
84   - "20.0"
85   - ],
86   - "firefox": [
87   - "10.0",
88   - "15.0"
89   - ],
90   - "iexplore": [
91   - "6.0",
92   - "7.0",
93   - "8.0",
94   - "9.0"
95   - ],
96   - "opera": [
97   - "12.0"
98   - ],
99   - "safari": [
100   - "5.1"
101   - ]
102   - },
103   - "files": "test/*.js"
104   - },
105   - "version": "1.0.0"
106   -}
images/node_modules/archy/readme.markdown deleted 100644 → 0
1   -# archy
2   -
3   -Render nested hierarchies `npm ls` style with unicode pipes.
4   -
5   -[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy)
6   -
7   -[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy)
8   -
9   -# example
10   -
11   -``` js
12   -var archy = require('archy');
13   -var s = archy({
14   - label : 'beep',
15   - nodes : [
16   - 'ity',
17   - {
18   - label : 'boop',
19   - nodes : [
20   - {
21   - label : 'o_O',
22   - nodes : [
23   - {
24   - label : 'oh',
25   - nodes : [ 'hello', 'puny' ]
26   - },
27   - 'human'
28   - ]
29   - },
30   - 'party\ntime!'
31   - ]
32   - }
33   - ]
34   -});
35   -console.log(s);
36   -```
37   -
38   -output
39   -
40   -```
41   -beep
42   -├── ity
43   -└─┬ boop
44   - ├─┬ o_O
45   - │ ├─┬ oh
46   - │ │ ├── hello
47   - │ │ └── puny
48   - │ └── human
49   - └── party
50   - time!
51   -```
52   -
53   -# methods
54   -
55   -var archy = require('archy')
56   -
57   -## archy(obj, prefix='', opts={})
58   -
59   -Return a string representation of `obj` with unicode pipe characters like how
60   -`npm ls` looks.
61   -
62   -`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
63   -`'label'` is a string of text to display at a node level and `'nodes'` is an
64   -array of the descendents of the current node.
65   -
66   -If a node is a string, that string will be used as the `'label'` and an empty
67   -array of `'nodes'` will be used.
68   -
69   -`prefix` gets prepended to all the lines and is used by the algorithm to
70   -recursively update.
71   -
72   -If `'label'` has newlines they will be indented at the present indentation level
73   -with the current prefix.
74   -
75   -To disable unicode results in favor of all-ansi output set `opts.unicode` to
76   -`false`.
77   -
78   -# install
79   -
80   -With [npm](http://npmjs.org) do:
81   -
82   -```
83   -npm install archy
84   -```
85   -
86   -# license
87   -
88   -MIT
images/node_modules/archy/test/beep.js deleted 100644 → 0
1   -var test = require('tape');
2   -var archy = require('../');
3   -
4   -test('beep', function (t) {
5   - var s = archy({
6   - label : 'beep',
7   - nodes : [
8   - 'ity',
9   - {
10   - label : 'boop',
11   - nodes : [
12   - {
13   - label : 'o_O',
14   - nodes : [
15   - {
16   - label : 'oh',
17   - nodes : [ 'hello', 'puny' ]
18   - },
19   - 'human'
20   - ]
21   - },
22   - 'party!'
23   - ]
24   - }
25   - ]
26   - });
27   - t.equal(s, [
28   - 'beep',
29   - '├── ity',
30   - '└─┬ boop',
31   - ' ├─┬ o_O',
32   - ' │ ├─┬ oh',
33   - ' │ │ ├── hello',
34   - ' │ │ └── puny',
35   - ' │ └── human',
36   - ' └── party!',
37   - ''
38   - ].join('\n'));
39   - t.end();
40   -});
images/node_modules/archy/test/multi_line.js deleted 100644 → 0
1   -var test = require('tape');
2   -var archy = require('../');
3   -
4   -test('multi-line', function (t) {
5   - var s = archy({
6   - label : 'beep\none\ntwo',
7   - nodes : [
8   - 'ity',
9   - {
10   - label : 'boop',
11   - nodes : [
12   - {
13   - label : 'o_O\nwheee',
14   - nodes : [
15   - {
16   - label : 'oh',
17   - nodes : [ 'hello', 'puny\nmeat' ]
18   - },
19   - 'creature'
20   - ]
21   - },
22   - 'party\ntime!'
23   - ]
24   - }
25   - ]
26   - });
27   - t.equal(s, [
28   - 'beep',
29   - '│ one',
30   - '│ two',
31   - '├── ity',
32   - '└─┬ boop',
33   - ' ├─┬ o_O',
34   - ' │ │ wheee',
35   - ' │ ├─┬ oh',
36   - ' │ │ ├── hello',
37   - ' │ │ └── puny',
38   - ' │ │ meat',
39   - ' │ └── creature',
40   - ' └── party',
41   - ' time!',
42   - ''
43   - ].join('\n'));
44   - t.end();
45   -});
images/node_modules/archy/test/non_unicode.js deleted 100644 → 0
1   -var test = require('tape');
2   -var archy = require('../');
3   -
4   -test('beep', function (t) {
5   - var s = archy({
6   - label : 'beep',
7   - nodes : [
8   - 'ity',
9   - {
10   - label : 'boop',
11   - nodes : [
12   - {
13   - label : 'o_O',
14   - nodes : [
15   - {
16   - label : 'oh',
17   - nodes : [ 'hello', 'puny' ]
18   - },
19   - 'human'
20   - ]
21   - },
22   - 'party!'
23   - ]
24   - }
25   - ]
26   - }, '', { unicode : false });
27   - t.equal(s, [
28   - 'beep',
29   - '+-- ity',
30   - '`-- boop',
31   - ' +-- o_O',
32   - ' | +-- oh',
33   - ' | | +-- hello',
34   - ' | | `-- puny',
35   - ' | `-- human',
36   - ' `-- party!',
37   - ''
38   - ].join('\n'));
39   - t.end();
40   -});
images/node_modules/argparse/HISTORY.md deleted 100644 → 0
1   -0.1.16 / 2013-12-01
2   --------------------
3   -
4   -* Maintenance release. Updated dependencies and docs.
5   -
6   -
7   -0.1.15 / 2013-05-13
8   --------------------
9   -
10   -* Fixed #55, @trebor89
11   -
12   -
13   -0.1.14 / 2013-05-12
14   --------------------
15   -
16   -* Fixed #62, @maxtaco
17   -
18   -
19   -0.1.13 / 2013-04-08
20   --------------------
21   -
22   -* Added `.npmignore` to reduce package size
23   -
24   -
25   -0.1.12 / 2013-02-10
26   --------------------
27   -
28   -* Fixed conflictHandler (#46), @hpaulj
29   -
30   -
31   -0.1.11 / 2013-02-07
32   --------------------
33   -
34   -* Multiple bugfixes, @hpaulj
35   -* Added 70+ tests (ported from python), @hpaulj
36   -* Added conflictHandler, @applepicke
37   -* Added fromfilePrefixChar, @hpaulj
38   -
39   -
40   -0.1.10 / 2012-12-30
41   --------------------
42   -
43   -* Added [mutual exclusion](http://docs.python.org/dev/library/argparse.html#mutual-exclusion)
44   - support, thanks to @hpaulj
45   -* Fixed options check for `storeConst` & `appendConst` actions, thanks to @hpaulj
46   -
47   -
48   -0.1.9 / 2012-12-27
49   -------------------
50   -
51   -* Fixed option dest interferens with other options (issue #23), thanks to @hpaulj
52   -* Fixed default value behavior with `*` positionals, thanks to @hpaulj
53   -* Improve `getDefault()` behavior, thanks to @hpaulj
54   -* Imrove negative argument parsing, thanks to @hpaulj
55   -
56   -
57   -0.1.8 / 2012-12-01
58   -------------------
59   -
60   -* Fixed parser parents (issue #19), thanks to @hpaulj
61   -* Fixed negative argument parse (issue #20), thanks to @hpaulj
62   -
63   -
64   -0.1.7 / 2012-10-14
65   -------------------
66   -
67   -* Fixed 'choices' argument parse (issue #16)
68   -* Fixed stderr output (issue #15)
69   -
70   -
71   -0.1.6 / 2012-09-09
72   -------------------
73   -
74   -* Fixed check for conflict of options (thanks to @tomxtobin)
75   -
76   -
77   -0.1.5 / 2012-09-03
78   -------------------
79   -
80   -* Fix parser #setDefaults method (thanks to @tomxtobin)
81   -
82   -
83   -0.1.4 / 2012-07-30
84   -------------------
85   -
86   -* Fixed pseudo-argument support (thanks to @CGamesPlay)
87   -* Fixed addHelp default (should be true), if not set (thanks to @benblank)
88   -
89   -
90   -0.1.3 / 2012-06-27
91   -------------------
92   -
93   -* Fixed formatter api name: Formatter -> HelpFormatter
94   -
95   -
96   -0.1.2 / 2012-05-29
97   -------------------
98   -
99   -* Added basic tests
100   -* Removed excess whitespace in help
101   -* Fixed error reporting, when parcer with subcommands
102   - called with empty arguments
103   -
104   -
105   -0.1.1 / 2012-05-23
106   -------------------
107   -
108   -* Fixed line wrapping in help formatter
109   -* Added better error reporting on invalid arguments
110   -
111   -
112   -0.1.0 / 2012-05-16
113   -------------------
114   -
115   -* First release.
images/node_modules/argparse/LICENSE deleted 100644 → 0
1   -(The MIT License)
2   -
3   -Copyright (C) 2012 by Vitaly Puzrin
4   -
5   -Permission is hereby granted, free of charge, to any person obtaining a copy
6   -of this software and associated documentation files (the "Software"), to deal
7   -in the Software without restriction, including without limitation the rights
8   -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9   -copies of the Software, and to permit persons to whom the Software is
10   -furnished to do so, subject to the following conditions:
11   -
12   -The above copyright notice and this permission notice shall be included in
13   -all copies or substantial portions of the Software.
14   -
15   -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16   -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17   -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18   -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19   -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20   -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21   -THE SOFTWARE.
images/node_modules/argparse/README.md deleted 100644 → 0
1   -argparse
2   -========
3   -
4   -[![Build Status](https://secure.travis-ci.org/nodeca/argparse.png?branch=master)](http://travis-ci.org/nodeca/argparse)
5   -
6   -CLI arguments parser for node.js. Javascript port of python's
7   -[argparse](http://docs.python.org/dev/library/argparse.html) module
8   -(original version 3.2). That's a full port, except some very rare options,
9   -recorded in issue tracker.
10   -
11   -**NB.** Method names changed to camelCase. See [generated docs](http://nodeca.github.com/argparse/).
12   -
13   -
14   -Example
15   -=======
16   -
17   -test.js file:
18   -
19   -```javascript
20   -#!/usr/bin/env node
21   -'use strict';
22   -
23   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
24   -var parser = new ArgumentParser({
25   - version: '0.0.1',
26   - addHelp:true,
27   - description: 'Argparse example'
28   -});
29   -parser.addArgument(
30   - [ '-f', '--foo' ],
31   - {
32   - help: 'foo bar'
33   - }
34   -);
35   -parser.addArgument(
36   - [ '-b', '--bar' ],
37   - {
38   - help: 'bar foo'
39   - }
40   -);
41   -var args = parser.parseArgs();
42   -console.dir(args);
43   -```
44   -
45   -Display help:
46   -
47   -```
48   -$ ./test.js -h
49   -usage: example.js [-h] [-v] [-f FOO] [-b BAR]
50   -
51   -Argparse example
52   -
53   -Optional arguments:
54   - -h, --help Show this help message and exit.
55   - -v, --version Show program's version number and exit.
56   - -f FOO, --foo FOO foo bar
57   - -b BAR, --bar BAR bar foo
58   -```
59   -
60   -Parse arguments:
61   -
62   -```
63   -$ ./test.js -f=3 --bar=4
64   -{ foo: '3', bar: '4' }
65   -```
66   -
67   -More [examples](https://github.com/nodeca/argparse/tree/master/examples).
68   -
69   -
70   -ArgumentParser objects
71   -======================
72   -
73   -```
74   -new ArgumentParser({paramters hash});
75   -```
76   -
77   -Creates a new ArgumentParser object.
78   -
79   -**Supported params:**
80   -
81   -- ```description``` - Text to display before the argument help.
82   -- ```epilog``` - Text to display after the argument help.
83   -- ```addHelp``` - Add a -h/–help option to the parser. (default: true)
84   -- ```argumentDefault``` - Set the global default value for arguments. (default: null)
85   -- ```parents``` - A list of ArgumentParser objects whose arguments should also be included.
86   -- ```prefixChars``` - The set of characters that prefix optional arguments. (default: ‘-‘)
87   -- ```formatterClass``` - A class for customizing the help output.
88   -- ```prog``` - The name of the program (default: `path.basename(process.argv[1])`)
89   -- ```usage``` - The string describing the program usage (default: generated)
90   -- ```conflictHandler``` - Usually unnecessary, defines strategy for resolving conflicting optionals.
91   -
92   -**Not supportied yet**
93   -
94   -- ```fromfilePrefixChars``` - The set of characters that prefix files from which additional arguments should be read.
95   -
96   -
97   -Details in [original ArgumentParser guide](http://docs.python.org/dev/library/argparse.html#argumentparser-objects)
98   -
99   -
100   -addArgument() method
101   -====================
102   -
103   -```
104   -ArgumentParser.addArgument([names or flags], {options})
105   -```
106   -
107   -Defines how a single command-line argument should be parsed.
108   -
109   -- ```name or flags``` - Either a name or a list of option strings, e.g. foo or -f, --foo.
110   -
111   -Options:
112   -
113   -- ```action``` - The basic type of action to be taken when this argument is encountered at the command line.
114   -- ```nargs```- The number of command-line arguments that should be consumed.
115   -- ```constant``` - A constant value required by some action and nargs selections.
116   -- ```defaultValue``` - The value produced if the argument is absent from the command line.
117   -- ```type``` - The type to which the command-line argument should be converted.
118   -- ```choices``` - A container of the allowable values for the argument.
119   -- ```required``` - Whether or not the command-line option may be omitted (optionals only).
120   -- ```help``` - A brief description of what the argument does.
121   -- ```metavar``` - A name for the argument in usage messages.
122   -- ```dest``` - The name of the attribute to be added to the object returned by parseArgs().
123   -
124   -Details in [original add_argument guide](http://docs.python.org/dev/library/argparse.html#the-add-argument-method)
125   -
126   -
127   -Action (some details)
128   -================
129   -
130   -ArgumentParser objects associate command-line arguments with actions.
131   -These actions can do just about anything with the command-line arguments associated
132   -with them, though most actions simply add an attribute to the object returned by
133   -parseArgs(). The action keyword argument specifies how the command-line arguments
134   -should be handled. The supported actions are:
135   -
136   -- ```store``` - Just stores the argument’s value. This is the default action.
137   -- ```storeConst``` - Stores value, specified by the const keyword argument.
138   - (Note that the const keyword argument defaults to the rather unhelpful None.)
139   - The 'storeConst' action is most commonly used with optional arguments, that
140   - specify some sort of flag.
141   -- ```storeTrue``` and ```storeFalse``` - Stores values True and False
142   - respectively. These are special cases of 'storeConst'.
143   -- ```append``` - Stores a list, and appends each argument value to the list.
144   - This is useful to allow an option to be specified multiple times.
145   -- ```appendConst``` - Stores a list, and appends value, specified by the
146   - const keyword argument to the list. (Note, that the const keyword argument defaults
147   - is None.) The 'appendConst' action is typically used when multiple arguments need
148   - to store constants to the same list.
149   -- ```count``` - Counts the number of times a keyword argument occurs. For example,
150   - used for increasing verbosity levels.
151   -- ```help``` - Prints a complete help message for all the options in the current
152   - parser and then exits. By default a help action is automatically added to the parser.
153   - See ArgumentParser for details of how the output is created.
154   -- ```version``` - Prints version information and exit. Expects a `version=`
155   - keyword argument in the addArgument() call.
156   -
157   -Details in [original action guide](http://docs.python.org/dev/library/argparse.html#action)
158   -
159   -
160   -Sub-commands
161   -============
162   -
163   -ArgumentParser.addSubparsers()
164   -
165   -Many programs split their functionality into a number of sub-commands, for
166   -example, the svn program can invoke sub-commands like `svn checkout`, `svn update`,
167   -and `svn commit`. Splitting up functionality this way can be a particularly good
168   -idea when a program performs several different functions which require different
169   -kinds of command-line arguments. `ArgumentParser` supports creation of such
170   -sub-commands with `addSubparsers()` method. The `addSubparsers()` method is
171   -normally called with no arguments and returns an special action object.
172   -This object has a single method `addParser()`, which takes a command name and
173   -any `ArgumentParser` constructor arguments, and returns an `ArgumentParser` object
174   -that can be modified as usual.
175   -
176   -Example:
177   -
178   -sub_commands.js
179   -```javascript
180   -#!/usr/bin/env node
181   -'use strict';
182   -
183   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
184   -var parser = new ArgumentParser({
185   - version: '0.0.1',
186   - addHelp:true,
187   - description: 'Argparse examples: sub-commands',
188   -});
189   -
190   -var subparsers = parser.addSubparsers({
191   - title:'subcommands',
192   - dest:"subcommand_name"
193   -});
194   -
195   -var bar = subparsers.addParser('c1', {addHelp:true});
196   -bar.addArgument(
197   - [ '-f', '--foo' ],
198   - {
199   - action: 'store',
200   - help: 'foo3 bar3'
201   - }
202   -);
203   -var bar = subparsers.addParser(
204   - 'c2',
205   - {aliases:['co'], addHelp:true}
206   -);
207   -bar.addArgument(
208   - [ '-b', '--bar' ],
209   - {
210   - action: 'store',
211   - type: 'int',
212   - help: 'foo3 bar3'
213   - }
214   -);
215   -
216   -var args = parser.parseArgs();
217   -console.dir(args);
218   -
219   -```
220   -
221   -Details in [original sub-commands guide](http://docs.python.org/dev/library/argparse.html#sub-commands)
222   -
223   -
224   -Contributors
225   -============
226   -
227   -- [Eugene Shkuropat](https://github.com/shkuropat)
228   -- [Paul Jacobson](https://github.com/hpaulj)
229   -
230   -[others](https://github.com/nodeca/argparse/graphs/contributors)
231   -
232   -License
233   -=======
234   -
235   -Copyright (c) 2012 [Vitaly Puzrin](https://github.com/puzrin).
236   -Released under the MIT license. See
237   -[LICENSE](https://github.com/nodeca/argparse/blob/master/LICENSE) for details.
238   -
239   -
images/node_modules/argparse/examples/arguments.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: arguments'
9   -});
10   -parser.addArgument(
11   - [ '-f', '--foo' ],
12   - {
13   - help: 'foo bar'
14   - }
15   -);
16   -parser.addArgument(
17   - [ '-b', '--bar' ],
18   - {
19   - help: 'bar foo'
20   - }
21   -);
22   -
23   -
24   -parser.printHelp();
25   -console.log('-----------');
26   -
27   -var args;
28   -args = parser.parseArgs('-f 1 -b2'.split(' '));
29   -console.dir(args);
30   -console.log('-----------');
31   -args = parser.parseArgs('-f=3 --bar=4'.split(' '));
32   -console.dir(args);
33   -console.log('-----------');
34   -args = parser.parseArgs('--foo 5 --bar 6'.split(' '));
35   -console.dir(args);
36   -console.log('-----------');
images/node_modules/argparse/examples/choice.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: choice'
9   -});
10   -
11   -parser.addArgument(['foo'], {choices: 'abc'});
12   -
13   -parser.printHelp();
14   -console.log('-----------');
15   -
16   -var args;
17   -args = parser.parseArgs(['c']);
18   -console.dir(args);
19   -console.log('-----------');
20   -parser.parseArgs(['X']);
21   -console.dir(args);
22   -
images/node_modules/argparse/examples/constants.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: constant'
9   -});
10   -
11   -parser.addArgument(
12   - [ '-a'],
13   - {
14   - action: 'storeConst',
15   - dest: 'answer',
16   - help: 'store constant',
17   - constant: 42
18   - }
19   -);
20   -parser.addArgument(
21   - [ '--str' ],
22   - {
23   - action: 'appendConst',
24   - dest: 'types',
25   - help: 'append constant "str" to types',
26   - constant: 'str'
27   - }
28   -);
29   -parser.addArgument(
30   - [ '--int' ],
31   - {
32   - action: 'appendConst',
33   - dest: 'types',
34   - help: 'append constant "int" to types',
35   - constant: 'int'
36   - }
37   -);
38   -
39   -parser.addArgument(
40   - [ '--true' ],
41   - {
42   - action: 'storeTrue',
43   - help: 'store true constant'
44   - }
45   -);
46   -parser.addArgument(
47   - [ '--false' ],
48   - {
49   - action: 'storeFalse',
50   - help: 'store false constant'
51   - }
52   -);
53   -
54   -parser.printHelp();
55   -console.log('-----------');
56   -
57   -var args;
58   -args = parser.parseArgs('-a --str --int --true'.split(' '));
59   -console.dir(args);
images/node_modules/argparse/examples/help.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: help',
9   - epilog: 'help epilog',
10   - prog: 'help_example_prog',
11   - usage: 'Usage %(prog)s <agrs>'
12   -});
13   -parser.printHelp();
images/node_modules/argparse/examples/nargs.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: nargs'
9   -});
10   -parser.addArgument(
11   - [ '-f', '--foo' ],
12   - {
13   - help: 'foo bar',
14   - nargs: 1
15   - }
16   -);
17   -parser.addArgument(
18   - [ '-b', '--bar' ],
19   - {
20   - help: 'bar foo',
21   - nargs: '*'
22   - }
23   -);
24   -
25   -parser.printHelp();
26   -console.log('-----------');
27   -
28   -var args;
29   -args = parser.parseArgs('--foo a --bar c d'.split(' '));
30   -console.dir(args);
31   -console.log('-----------');
32   -args = parser.parseArgs('--bar b c f --foo a'.split(' '));
33   -console.dir(args);
images/node_modules/argparse/examples/parents.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -
6   -var args;
7   -var parent_parser = new ArgumentParser({ addHelp: false });
8   -// note addHelp:false to prevent duplication of the -h option
9   -parent_parser.addArgument(
10   - ['--parent'],
11   - { type: 'int', description: 'parent' }
12   -);
13   -
14   -var foo_parser = new ArgumentParser({
15   - parents: [ parent_parser ],
16   - description: 'child1'
17   -});
18   -foo_parser.addArgument(['foo']);
19   -args = foo_parser.parseArgs(['--parent', '2', 'XXX']);
20   -console.log(args);
21   -
22   -var bar_parser = new ArgumentParser({
23   - parents: [ parent_parser ],
24   - description: 'child2'
25   -});
26   -bar_parser.addArgument(['--bar']);
27   -args = bar_parser.parseArgs(['--bar', 'YYY']);
28   -console.log(args);
images/node_modules/argparse/examples/prefix_chars.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: prefix_chars',
9   - prefixChars: '-+'
10   -});
11   -parser.addArgument(['+f', '++foo']);
12   -parser.addArgument(['++bar'], {action: 'storeTrue'});
13   -
14   -parser.printHelp();
15   -console.log('-----------');
16   -
17   -var args;
18   -args = parser.parseArgs(['+f', '1']);
19   -console.dir(args);
20   -args = parser.parseArgs(['++bar']);
21   -console.dir(args);
22   -args = parser.parseArgs(['++foo', '2', '++bar']);
23   -console.dir(args);
images/node_modules/argparse/examples/sub_commands.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -'use strict';
3   -
4   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
5   -var parser = new ArgumentParser({
6   - version: '0.0.1',
7   - addHelp: true,
8   - description: 'Argparse examples: sub-commands'
9   -});
10   -
11   -var subparsers = parser.addSubparsers({
12   - title: 'subcommands',
13   - dest: "subcommand_name"
14   -});
15   -
16   -var bar = subparsers.addParser('c1', {addHelp: true, help: 'c1 help'});
17   -bar.addArgument(
18   - [ '-f', '--foo' ],
19   - {
20   - action: 'store',
21   - help: 'foo3 bar3'
22   - }
23   -);
24   -var bar = subparsers.addParser(
25   - 'c2',
26   - {aliases: ['co'], addHelp: true, help: 'c2 help'}
27   -);
28   -bar.addArgument(
29   - [ '-b', '--bar' ],
30   - {
31   - action: 'store',
32   - type: 'int',
33   - help: 'foo3 bar3'
34   - }
35   -);
36   -parser.printHelp();
37   -console.log('-----------');
38   -
39   -var args;
40   -args = parser.parseArgs('c1 -f 2'.split(' '));
41   -console.dir(args);
42   -console.log('-----------');
43   -args = parser.parseArgs('c2 -b 1'.split(' '));
44   -console.dir(args);
45   -console.log('-----------');
46   -args = parser.parseArgs('co -b 1'.split(' '));
47   -console.dir(args);
48   -console.log('-----------');
49   -parser.parseArgs(['c1', '-h']);
images/node_modules/argparse/examples/sum.js deleted 100755 → 0
1   -#!/usr/bin/env node
2   -
3   -'use strict';
4   -
5   -
6   -var ArgumentParser = require('../lib/argparse').ArgumentParser;
7   -var parser = new ArgumentParser({ description: 'Process some integers.' });
8   -
9   -
10   -function sum(arr) {
11   - return arr.reduce(function (a, b) {
12   - return a + b;
13   - }, 0);
14   -}
15   -function max(arr) {
16   - return Math.max.apply(Math, arr);
17   -}
18   -
19   -
20   -parser.addArgument(['integers'], {
21   - metavar: 'N',
22   - type: 'int',
23   - nargs: '+',
24   - help: 'an integer for the accumulator'
25   -});
26   -parser.addArgument(['--sum'], {
27   - dest: 'accumulate',
28   - action: 'storeConst',
29   - constant: sum,
30   - defaultValue: max,
31   - help: 'sum the integers (default: find the max)'
32   -});
33   -
34   -var args = parser.parseArgs('--sum 1 2 -1'.split(' '));
35   -console.log(args.accumulate(args.integers));
images/node_modules/argparse/examples/testformatters.js deleted 100644 → 0
1   -'use strict';
2   -
3   -var a, group, parser, helptext;
4   -
5   -var assert = require('assert');
6   -var _ = require('underscore');
7   -_.str = require('underscore.string');
8   -var print = function () {
9   - return console.log.apply(console, arguments);
10   - };
11   -// print = function () {};
12   -
13   -var argparse = require('argparse');
14   -
15   -print("TEST argparse.ArgumentDefaultsHelpFormatter");
16   -
17   -parser = new argparse.ArgumentParser({
18   - debug: true,
19   - formatterClass: argparse.ArgumentDefaultsHelpFormatter,
20   - description: 'description'
21   -});
22   -
23   -parser.addArgument(['--foo'], {
24   - help: 'foo help - oh and by the way, %(defaultValue)s'
25   -});
26   -
27   -parser.addArgument(['--bar'], {
28   - action: 'storeTrue',
29   - help: 'bar help'
30   -});
31   -
32   -parser.addArgument(['spam'], {
33   - help: 'spam help'
34   -});
35   -
36   -parser.addArgument(['badger'], {
37   - nargs: '?',
38   - defaultValue: 'wooden',
39   - help: 'badger help'
40   -});
41   -
42   -group = parser.addArgumentGroup({
43   - title: 'title',
44   - description: 'group description'
45   -});
46   -
47   -group.addArgument(['--baz'], {
48   - type: 'int',
49   - defaultValue: 42,
50   - help: 'baz help'
51   -});
52   -
53   -helptext = parser.formatHelp();
54   -print(helptext);
55   -// test selected clips
56   -assert(helptext.match(/badger help \(default: wooden\)/));
57   -assert(helptext.match(/foo help - oh and by the way, null/));
58   -assert(helptext.match(/bar help \(default: false\)/));
59   -assert(helptext.match(/title:\n {2}group description/)); // test indent
60   -assert(helptext.match(/baz help \(default: 42\)/im));
61   -
62   -/*
63   -usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger]
64   -
65   -description
66   -
67   -positional arguments:
68   - spam spam help
69   - badger badger help (default: wooden)
70   -
71   -optional arguments:
72   - -h, --help show this help message and exit
73   - --foo FOO foo help - oh and by the way, null
74   - --bar bar help (default: false)
75   -
76   -title:
77   - group description
78   -
79   - --baz BAZ baz help (default: 42)
80   -*/
81   -
82   -print("TEST argparse.RawDescriptionHelpFormatter");
83   -
84   -parser = new argparse.ArgumentParser({
85   - debug: true,
86   - prog: 'PROG',
87   - formatterClass: argparse.RawDescriptionHelpFormatter,
88   - description: 'Keep the formatting\n' +
89   - ' exactly as it is written\n' +
90   - '\n' +
91   - 'here\n'
92   -});
93   -
94   -a = parser.addArgument(['--foo'], {
95   - help: ' foo help should not\n' +
96   - ' retain this odd formatting'
97   -});
98   -
99   -parser.addArgument(['spam'], {
100   - 'help': 'spam help'
101   -});
102   -
103   -group = parser.addArgumentGroup({
104   - title: 'title',
105   - description: ' This text\n' +
106   - ' should be indented\n' +
107   - ' exactly like it is here\n'
108   -});
109   -
110   -group.addArgument(['--bar'], {
111   - help: 'bar help'
112   -});
113   -
114   -helptext = parser.formatHelp();
115   -print(helptext);
116   -// test selected clips
117   -assert(helptext.match(parser.description));
118   -assert.equal(helptext.match(a.help), null);
119   -assert(helptext.match(/foo help should not retain this odd formatting/));
120   -
121   -/*
122   -class TestHelpRawDescription(HelpTestCase):
123   - """Test the RawTextHelpFormatter"""
124   -....
125   -
126   -usage: PROG [-h] [--foo FOO] [--bar BAR] spam
127   -
128   -Keep the formatting
129   - exactly as it is written
130   -
131   -here
132   -
133   -positional arguments:
134   - spam spam help
135   -
136   -optional arguments:
137   - -h, --help show this help message and exit
138   - --foo FOO foo help should not retain this odd formatting
139   -
140   -title:
141   - This text
142   - should be indented
143   - exactly like it is here
144   -
145   - --bar BAR bar help
146   -*/
147   -
148   -
149   -print("TEST argparse.RawTextHelpFormatter");
150   -
151   -parser = new argparse.ArgumentParser({
152   - debug: true,
153   - prog: 'PROG',
154   - formatterClass: argparse.RawTextHelpFormatter,
155   - description: 'Keep the formatting\n' +
156   - ' exactly as it is written\n' +
157   - '\n' +
158   - 'here\n'
159   -});
160   -
161   -parser.addArgument(['--baz'], {
162   - help: ' baz help should also\n' +
163   - 'appear as given here'
164   -});
165   -
166   -a = parser.addArgument(['--foo'], {
167   - help: ' foo help should also\n' +
168   - 'appear as given here'
169   -});
170   -
171   -parser.addArgument(['spam'], {
172   - 'help': 'spam help'
173   -});
174   -
175   -group = parser.addArgumentGroup({
176   - title: 'title',
177   - description: ' This text\n' +
178   - ' should be indented\n' +
179   - ' exactly like it is here\n'
180   -});
181   -
182   -group.addArgument(['--bar'], {
183   - help: 'bar help'
184   -});
185   -
186   -helptext = parser.formatHelp();
187   -print(helptext);
188   -// test selected clips
189   -assert(helptext.match(parser.description));
190   -assert(helptext.match(/( {14})appear as given here/gm));
191   -
192   -/*
193   -class TestHelpRawText(HelpTestCase):
194   - """Test the RawTextHelpFormatter"""
195   -
196   -usage: PROG [-h] [--foo FOO] [--bar BAR] spam
197   -
198   -Keep the formatting
199   - exactly as it is written
200   -
201   -here
202   -
203   -positional arguments:
204   - spam spam help
205   -
206   -optional arguments:
207   - -h, --help show this help message and exit
208   - --foo FOO foo help should also
209   - appear as given here
210   -
211   -title:
212   - This text
213   - should be indented
214   - exactly like it is here
215   -
216   - --bar BAR bar help
217   -*/
218   -
219   -
220   -print("TEST metavar as a tuple");
221   -
222   -parser = new argparse.ArgumentParser({
223   - prog: 'PROG'
224   -});
225   -
226   -parser.addArgument(['-w'], {
227   - help: 'w',
228   - nargs: '+',
229   - metavar: ['W1', 'W2']
230   -});
231   -
232   -parser.addArgument(['-x'], {
233   - help: 'x',
234   - nargs: '*',
235   - metavar: ['X1', 'X2']
236   -});
237   -
238   -parser.addArgument(['-y'], {
239   - help: 'y',
240   - nargs: 3,
241   - metavar: ['Y1', 'Y2', 'Y3']
242   -});
243   -
244   -parser.addArgument(['-z'], {
245   - help: 'z',
246   - nargs: '?',
247   - metavar: ['Z1']
248   -});
249   -
250   -helptext = parser.formatHelp();
251   -print(helptext);
252   -var ustring = 'PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]';
253   -ustring = ustring.replace(/\[/g, '\\[').replace(/\]/g, '\\]');
254   -// print(ustring)
255   -assert(helptext.match(new RegExp(ustring)));
256   -
257   -/*
258   -class TestHelpTupleMetavar(HelpTestCase):
259   - """Test specifying metavar as a tuple"""
260   -
261   -usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]
262   -
263   -optional arguments:
264   - -h, --help show this help message and exit
265   - -w W1 [W2 ...] w
266   - -x [X1 [X2 ...]] x
267   - -y Y1 Y2 Y3 y
268   - -z [Z1] z
269   -*/
270   -
images/node_modules/argparse/index.js deleted 100644 → 0
1   -module.exports = require('./lib/argparse');
images/node_modules/argparse/lib/action.js deleted 100644 → 0
1   -/**
2   - * class Action
3   - *
4   - * Base class for all actions
5   - * Do not call in your code, use this class only for inherits your own action
6   - *
7   - * Information about how to convert command line strings to Javascript objects.
8   - * Action objects are used by an ArgumentParser to represent the information
9   - * needed to parse a single argument from one or more strings from the command
10   - * line. The keyword arguments to the Action constructor are also all attributes
11   - * of Action instances.
12   - *
13   - * #####Alowed keywords:
14   - *
15   - * - `store`
16   - * - `storeConstant`
17   - * - `storeTrue`
18   - * - `storeFalse`
19   - * - `append`
20   - * - `appendConstant`
21   - * - `count`
22   - * - `help`
23   - * - `version`
24   - *
25   - * Information about action options see [[Action.new]]
26   - *
27   - * See also [original guide](http://docs.python.org/dev/library/argparse.html#action)
28   - *
29   - **/
30   -
31   -'use strict';
32   -
33   -
34   -// Constants
35   -var $$ = require('./const');
36   -
37   -
38   -/**
39   - * new Action(options)
40   - *
41   - * Base class for all actions. Used only for inherits
42   - *
43   - *
44   - * ##### Options:
45   - *
46   - * - `optionStrings` A list of command-line option strings for the action.
47   - * - `dest` Attribute to hold the created object(s)
48   - * - `nargs` The number of command-line arguments that should be consumed.
49   - * By default, one argument will be consumed and a single value will be
50   - * produced.
51   - * - `constant` Default value for an action with no value.
52   - * - `defaultValue` The value to be produced if the option is not specified.
53   - * - `type` Cast to 'string'|'int'|'float'|'complex'|function (string). If
54   - * None, 'string'.
55   - * - `choices` The choices available.
56   - * - `required` True if the action must always be specified at the command
57   - * line.
58   - * - `help` The help describing the argument.
59   - * - `metavar` The name to be used for the option's argument with the help
60   - * string. If None, the 'dest' value will be used as the name.
61   - *
62   - * ##### nargs supported values:
63   - *
64   - * - `N` (an integer) consumes N arguments (and produces a list)
65   - * - `?` consumes zero or one arguments
66   - * - `*` consumes zero or more arguments (and produces a list)
67   - * - `+` consumes one or more arguments (and produces a list)
68   - *
69   - * Note: that the difference between the default and nargs=1 is that with the
70   - * default, a single value will be produced, while with nargs=1, a list
71   - * containing a single value will be produced.
72   - **/
73   -var Action = module.exports = function Action(options) {
74   - options = options || {};
75   - this.optionStrings = options.optionStrings || [];
76   - this.dest = options.dest;
77   - this.nargs = options.nargs !== undefined ? options.nargs : null;
78   - this.constant = options.constant !== undefined ? options.constant : null;
79   - this.defaultValue = options.defaultValue;
80   - this.type = options.type !== undefined ? options.type : null;
81   - this.choices = options.choices !== undefined ? options.choices : null;
82   - this.required = options.required !== undefined ? options.required: false;
83   - this.help = options.help !== undefined ? options.help : null;
84   - this.metavar = options.metavar !== undefined ? options.metavar : null;
85   -
86   - if (!(this.optionStrings instanceof Array)) {
87   - throw new Error('optionStrings should be an array');
88   - }
89   - if (this.required !== undefined && typeof(this.required) !== 'boolean') {
90   - throw new Error('required should be a boolean');
91   - }
92   -};
93   -
94   -/**
95   - * Action#getName -> String
96   - *
97   - * Tells action name
98   - **/
99   -Action.prototype.getName = function () {
100   - if (this.optionStrings.length > 0) {
101   - return this.optionStrings.join('/');
102   - } else if (this.metavar !== null && this.metavar !== $$.SUPPRESS) {
103   - return this.metavar;
104   - } else if (this.dest !== undefined && this.dest !== $$.SUPPRESS) {
105   - return this.dest;
106   - }
107   - return null;
108   -};
109   -
110   -/**
111   - * Action#isOptional -> Boolean
112   - *
113   - * Return true if optional
114   - **/
115   -Action.prototype.isOptional = function () {
116   - return !this.isPositional();
117   -};
118   -
119   -/**
120   - * Action#isPositional -> Boolean
121   - *
122   - * Return true if positional
123   - **/
124   -Action.prototype.isPositional = function () {
125   - return (this.optionStrings.length === 0);
126   -};
127   -
128   -/**
129   - * Action#call(parser, namespace, values, optionString) -> Void
130   - * - parser (ArgumentParser): current parser
131   - * - namespace (Namespace): namespace for output data
132   - * - values (Array): parsed values
133   - * - optionString (Array): input option string(not parsed)
134   - *
135   - * Call the action. Should be implemented in inherited classes
136   - *
137   - * ##### Example
138   - *
139   - * ActionCount.prototype.call = function (parser, namespace, values, optionString) {
140   - * namespace.set(this.dest, (namespace[this.dest] || 0) + 1);
141   - * };
142   - *
143   - **/
144   -Action.prototype.call = function () {
145   - throw new Error('.call() not defined');// Not Implemented error
146   -};
images/node_modules/argparse/lib/action/append.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionAppend
3   - *
4   - * This action stores a list, and appends each argument value to the list.
5   - * This is useful to allow an option to be specified multiple times.
6   - * This class inherided from [[Action]]
7   - *
8   - **/
9   -
10   -'use strict';
11   -
12   -var util = require('util');
13   -
14   -var Action = require('../action');
15   -
16   -// Constants
17   -var $$ = require('../const');
18   -
19   -/*:nodoc:*
20   - * new ActionAppend(options)
21   - * - options (object): options hash see [[Action.new]]
22   - *
23   - * Note: options.nargs should be optional for constants
24   - * and more then zero for other
25   - **/
26   -var ActionAppend = module.exports = function ActionAppend(options) {
27   - options = options || {};
28   - if (this.nargs <= 0) {
29   - throw new Error('nargs for append actions must be > 0; if arg ' +
30   - 'strings are not supplying the value to append, ' +
31   - 'the append const action may be more appropriate');
32   - }
33   - if (!!this.constant && this.nargs !== $$.OPTIONAL) {
34   - throw new Error('nargs must be OPTIONAL to supply const');
35   - }
36   - Action.call(this, options);
37   -};
38   -util.inherits(ActionAppend, Action);
39   -
40   -/*:nodoc:*
41   - * ActionAppend#call(parser, namespace, values, optionString) -> Void
42   - * - parser (ArgumentParser): current parser
43   - * - namespace (Namespace): namespace for output data
44   - * - values (Array): parsed values
45   - * - optionString (Array): input option string(not parsed)
46   - *
47   - * Call the action. Save result in namespace object
48   - **/
49   -ActionAppend.prototype.call = function (parser, namespace, values) {
50   - var items = [].concat(namespace[this.dest] || []); // or _.clone
51   - items.push(values);
52   - namespace.set(this.dest, items);
53   -};
54   -
55   -
images/node_modules/argparse/lib/action/append/constant.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionAppendConstant
3   - *
4   - * This stores a list, and appends the value specified by
5   - * the const keyword argument to the list.
6   - * (Note that the const keyword argument defaults to null.)
7   - * The 'appendConst' action is typically useful when multiple
8   - * arguments need to store constants to the same list.
9   - *
10   - * This class inherited from [[Action]]
11   - **/
12   -
13   -'use strict';
14   -
15   -var util = require('util');
16   -
17   -var Action = require('../../action');
18   -
19   -/*:nodoc:*
20   - * new ActionAppendConstant(options)
21   - * - options (object): options hash see [[Action.new]]
22   - *
23   - **/
24   -var ActionAppendConstant = module.exports = function ActionAppendConstant(options) {
25   - options = options || {};
26   - options.nargs = 0;
27   - if (options.constant === undefined) {
28   - throw new Error('constant option is required for appendAction');
29   - }
30   - Action.call(this, options);
31   -};
32   -util.inherits(ActionAppendConstant, Action);
33   -
34   -/*:nodoc:*
35   - * ActionAppendConstant#call(parser, namespace, values, optionString) -> Void
36   - * - parser (ArgumentParser): current parser
37   - * - namespace (Namespace): namespace for output data
38   - * - values (Array): parsed values
39   - * - optionString (Array): input option string(not parsed)
40   - *
41   - * Call the action. Save result in namespace object
42   - **/
43   -ActionAppendConstant.prototype.call = function (parser, namespace) {
44   - var items = [].concat(namespace[this.dest] || []);
45   - items.push(this.constant);
46   - namespace.set(this.dest, items);
47   -};
images/node_modules/argparse/lib/action/count.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionCount
3   - *
4   - * This counts the number of times a keyword argument occurs.
5   - * For example, this is useful for increasing verbosity levels
6   - *
7   - * This class inherided from [[Action]]
8   - *
9   - **/
10   -'use strict';
11   -
12   -var util = require('util');
13   -
14   -var Action = require('../action');
15   -
16   -/*:nodoc:*
17   - * new ActionCount(options)
18   - * - options (object): options hash see [[Action.new]]
19   - *
20   - **/
21   -var ActionCount = module.exports = function ActionCount(options) {
22   - options = options || {};
23   - options.nargs = 0;
24   -
25   - Action.call(this, options);
26   -};
27   -util.inherits(ActionCount, Action);
28   -
29   -/*:nodoc:*
30   - * ActionCount#call(parser, namespace, values, optionString) -> Void
31   - * - parser (ArgumentParser): current parser
32   - * - namespace (Namespace): namespace for output data
33   - * - values (Array): parsed values
34   - * - optionString (Array): input option string(not parsed)
35   - *
36   - * Call the action. Save result in namespace object
37   - **/
38   -ActionCount.prototype.call = function (parser, namespace) {
39   - namespace.set(this.dest, (namespace[this.dest] || 0) + 1);
40   -};
images/node_modules/argparse/lib/action/help.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionHelp
3   - *
4   - * Support action for printing help
5   - * This class inherided from [[Action]]
6   - **/
7   -'use strict';
8   -
9   -var util = require('util');
10   -
11   -var Action = require('../action');
12   -
13   -// Constants
14   -var $$ = require('../const');
15   -
16   -/*:nodoc:*
17   - * new ActionHelp(options)
18   - * - options (object): options hash see [[Action.new]]
19   - *
20   - **/
21   -var ActionHelp = module.exports = function ActionHelp(options) {
22   - options = options || {};
23   - if (options.defaultValue !== null) {
24   - options.defaultValue = options.defaultValue;
25   - }
26   - else {
27   - options.defaultValue = $$.SUPPRESS;
28   - }
29   - options.dest = (options.dest !== null ? options.dest: $$.SUPPRESS);
30   - options.nargs = 0;
31   - Action.call(this, options);
32   -
33   -};
34   -util.inherits(ActionHelp, Action);
35   -
36   -/*:nodoc:*
37   - * ActionHelp#call(parser, namespace, values, optionString)
38   - * - parser (ArgumentParser): current parser
39   - * - namespace (Namespace): namespace for output data
40   - * - values (Array): parsed values
41   - * - optionString (Array): input option string(not parsed)
42   - *
43   - * Print help and exit
44   - **/
45   -ActionHelp.prototype.call = function (parser) {
46   - parser.printHelp();
47   - parser.exit();
48   -};
images/node_modules/argparse/lib/action/store.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionStore
3   - *
4   - * This action just stores the argument’s value. This is the default action.
5   - *
6   - * This class inherited from [[Action]]
7   - *
8   - **/
9   -'use strict';
10   -
11   -var util = require('util');
12   -
13   -var Action = require('../action');
14   -
15   -// Constants
16   -var $$ = require('../const');
17   -
18   -
19   -/*:nodoc:*
20   - * new ActionStore(options)
21   - * - options (object): options hash see [[Action.new]]
22   - *
23   - **/
24   -var ActionStore = module.exports = function ActionStore(options) {
25   - options = options || {};
26   - if (this.nargs <= 0) {
27   - throw new Error('nargs for store actions must be > 0; if you ' +
28   - 'have nothing to store, actions such as store ' +
29   - 'true or store const may be more appropriate');
30   -
31   - }
32   - if (this.constant !== undefined && this.nargs !== $$.OPTIONAL) {
33   - throw new Error('nargs must be OPTIONAL to supply const');
34   - }
35   - Action.call(this, options);
36   -};
37   -util.inherits(ActionStore, Action);
38   -
39   -/*:nodoc:*
40   - * ActionStore#call(parser, namespace, values, optionString) -> Void
41   - * - parser (ArgumentParser): current parser
42   - * - namespace (Namespace): namespace for output data
43   - * - values (Array): parsed values
44   - * - optionString (Array): input option string(not parsed)
45   - *
46   - * Call the action. Save result in namespace object
47   - **/
48   -ActionStore.prototype.call = function (parser, namespace, values) {
49   - namespace.set(this.dest, values);
50   -};
images/node_modules/argparse/lib/action/store/constant.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionStoreConstant
3   - *
4   - * This action stores the value specified by the const keyword argument.
5   - * (Note that the const keyword argument defaults to the rather unhelpful null.)
6   - * The 'store_const' action is most commonly used with optional
7   - * arguments that specify some sort of flag.
8   - *
9   - * This class inherited from [[Action]]
10   - **/
11   -'use strict';
12   -
13   -var util = require('util');
14   -
15   -var Action = require('../../action');
16   -
17   -/*:nodoc:*
18   - * new ActionStoreConstant(options)
19   - * - options (object): options hash see [[Action.new]]
20   - *
21   - **/
22   -var ActionStoreConstant = module.exports = function ActionStoreConstant(options) {
23   - options = options || {};
24   - options.nargs = 0;
25   - if (options.constant === undefined) {
26   - throw new Error('constant option is required for storeAction');
27   - }
28   - Action.call(this, options);
29   -};
30   -util.inherits(ActionStoreConstant, Action);
31   -
32   -/*:nodoc:*
33   - * ActionStoreConstant#call(parser, namespace, values, optionString) -> Void
34   - * - parser (ArgumentParser): current parser
35   - * - namespace (Namespace): namespace for output data
36   - * - values (Array): parsed values
37   - * - optionString (Array): input option string(not parsed)
38   - *
39   - * Call the action. Save result in namespace object
40   - **/
41   -ActionStoreConstant.prototype.call = function (parser, namespace) {
42   - namespace.set(this.dest, this.constant);
43   -};
images/node_modules/argparse/lib/action/store/false.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionStoreFalse
3   - *
4   - * This action store the values False respectively.
5   - * This is special cases of 'storeConst'
6   - *
7   - * This class inherited from [[Action]]
8   - **/
9   -
10   -'use strict';
11   -
12   -var util = require('util');
13   -
14   -var ActionStoreConstant = require('./constant');
15   -
16   -/*:nodoc:*
17   - * new ActionStoreFalse(options)
18   - * - options (object): hash of options see [[Action.new]]
19   - *
20   - **/
21   -var ActionStoreFalse = module.exports = function ActionStoreFalse(options) {
22   - options = options || {};
23   - options.constant = false;
24   - options.defaultValue = options.defaultValue !== null ? options.defaultValue: true;
25   - ActionStoreConstant.call(this, options);
26   -};
27   -util.inherits(ActionStoreFalse, ActionStoreConstant);
images/node_modules/argparse/lib/action/store/true.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionStoreTrue
3   - *
4   - * This action store the values True respectively.
5   - * This isspecial cases of 'storeConst'
6   - *
7   - * This class inherited from [[Action]]
8   - **/
9   -'use strict';
10   -
11   -var util = require('util');
12   -
13   -var ActionStoreConstant = require('./constant');
14   -
15   -/*:nodoc:*
16   - * new ActionStoreTrue(options)
17   - * - options (object): options hash see [[Action.new]]
18   - *
19   - **/
20   -var ActionStoreTrue = module.exports = function ActionStoreTrue(options) {
21   - options = options || {};
22   - options.constant = true;
23   - options.defaultValue = options.defaultValue !== null ? options.defaultValue: false;
24   - ActionStoreConstant.call(this, options);
25   -};
26   -util.inherits(ActionStoreTrue, ActionStoreConstant);
images/node_modules/argparse/lib/action/subparsers.js deleted 100644 → 0
1   -/** internal
2   - * class ActionSubparsers
3   - *
4   - * Support the creation of such sub-commands with the addSubparsers()
5   - *
6   - * This class inherited from [[Action]]
7   - **/
8   -'use strict';
9   -
10   -var util = require('util');
11   -var format = require('util').format;
12   -var _ = require('underscore');
13   -
14   -
15   -var Action = require('../action');
16   -
17   -// Constants
18   -var $$ = require('../const');
19   -
20   -// Errors
21   -var argumentErrorHelper = require('../argument/error');
22   -
23   -
24   -/*:nodoc:*
25   - * new ChoicesPseudoAction(name, help)
26   - *
27   - * Create pseudo action for correct help text
28   - *
29   - **/
30   -var ChoicesPseudoAction = function (name, help) {
31   - var options = {
32   - optionStrings: [],
33   - dest: name,
34   - help: help
35   - };
36   -
37   - Action.call(this, options);
38   -};
39   -util.inherits(ChoicesPseudoAction, Action);
40   -
41   -/**
42   - * new ActionSubparsers(options)
43   - * - options (object): options hash see [[Action.new]]
44   - *
45   - **/
46   -var ActionSubparsers = module.exports = function ActionSubparsers(options) {
47   - options = options || {};
48   - options.dest = options.dest || $$.SUPPRESS;
49   - options.nargs = $$.PARSER;
50   -
51   - this.debug = (options.debug === true);
52   -
53   - this._progPrefix = options.prog;
54   - this._parserClass = options.parserClass;
55   - this._nameParserMap = {};
56   - this._choicesActions = [];
57   -
58   - options.choices = this._nameParserMap;
59   - Action.call(this, options);
60   -};
61   -util.inherits(ActionSubparsers, Action);
62   -
63   -/*:nodoc:*
64   - * ActionSubparsers#addParser(name, options) -> ArgumentParser
65   - * - name (string): sub-command name
66   - * - options (object): see [[ArgumentParser.new]]
67   - *
68   - * Note:
69   - * addParser supports an additional aliases option,
70   - * which allows multiple strings to refer to the same subparser.
71   - * This example, like svn, aliases co as a shorthand for checkout
72   - *
73   - **/
74   -ActionSubparsers.prototype.addParser = function (name, options) {
75   - var parser;
76   -
77   - var self = this;
78   -
79   - options = options || {};
80   -
81   - options.debug = (this.debug === true);
82   -
83   - // set program from the existing prefix
84   - if (!options.prog) {
85   - options.prog = this._progPrefix + ' ' + name;
86   - }
87   -
88   - var aliases = options.aliases || [];
89   -
90   - // create a pseudo-action to hold the choice help
91   - if (!!options.help || _.isString(options.help)) {
92   - var help = options.help;
93   - delete options.help;
94   -
95   - var choiceAction = new ChoicesPseudoAction(name, help);
96   - this._choicesActions.push(choiceAction);
97   - }
98   -
99   - // create the parser and add it to the map
100   - parser = new this._parserClass(options);
101   - this._nameParserMap[name] = parser;
102   -
103   - // make parser available under aliases also
104   - aliases.forEach(function (alias) {
105   - self._nameParserMap[alias] = parser;
106   - });
107   -
108   - return parser;
109   -};
110   -
111   -ActionSubparsers.prototype._getSubactions = function () {
112   - return this._choicesActions;
113   -};
114   -
115   -/*:nodoc:*
116   - * ActionSubparsers#call(parser, namespace, values, optionString) -> Void
117   - * - parser (ArgumentParser): current parser
118   - * - namespace (Namespace): namespace for output data
119   - * - values (Array): parsed values
120   - * - optionString (Array): input option string(not parsed)
121   - *
122   - * Call the action. Parse input aguments
123   - **/
124   -ActionSubparsers.prototype.call = function (parser, namespace, values) {
125   - var parserName = values[0];
126   - var argStrings = values.slice(1);
127   -
128   - // set the parser name if requested
129   - if (this.dest !== $$.SUPPRESS) {
130   - namespace[this.dest] = parserName;
131   - }
132   -
133   - // select the parser
134   - if (!!this._nameParserMap[parserName]) {
135   - parser = this._nameParserMap[parserName];
136   - } else {
137   - throw argumentErrorHelper(format(
138   - 'Unknown parser "%s" (choices: [%s]).',
139   - parserName,
140   - _.keys(this._nameParserMap).join(', ')
141   - ));
142   - }
143   -
144   - // parse all the remaining options into the namespace
145   - parser.parseArgs(argStrings, namespace);
146   -};
147   -
148   -
images/node_modules/argparse/lib/action/version.js deleted 100644 → 0
1   -/*:nodoc:*
2   - * class ActionVersion
3   - *
4   - * Support action for printing program version
5   - * This class inherited from [[Action]]
6   - **/
7   -'use strict';
8   -
9   -var util = require('util');
10   -
11   -var Action = require('../action');
12   -
13   -//
14   -// Constants
15   -//
16   -var $$ = require('../const');
17   -
18   -/*:nodoc:*
19   - * new ActionVersion(options)
20   - * - options (object): options hash see [[Action.new]]
21   - *
22   - **/
23   -var ActionVersion = module.exports = function ActionVersion(options) {
24   - options = options || {};
25   - options.defaultValue = (!!options.defaultValue ? options.defaultValue: $$.SUPPRESS);
26   - options.dest = (options.dest || $$.SUPPRESS);
27   - options.nargs = 0;
28   - this.version = options.version;
29   - Action.call(this, options);
30   -};
31   -util.inherits(ActionVersion, Action);
32   -
33   -/*:nodoc:*
34   - * ActionVersion#call(parser, namespace, values, optionString) -> Void
35   - * - parser (ArgumentParser): current parser
36   - * - namespace (Namespace): namespace for output data
37   - * - values (Array): parsed values
38   - * - optionString (Array): input option string(not parsed)
39   - *
40   - * Print version and exit
41   - **/
42   -ActionVersion.prototype.call = function (parser) {
43   - var version = this.version || parser.version;
44   - var formatter = parser._getFormatter();
45   - formatter.addText(version);
46   - parser.exit(0, formatter.formatHelp());
47   -};
48   -
49   -
50   -
images/node_modules/argparse/lib/action_container.js deleted 100644 → 0
1   -/** internal
2   - * class ActionContainer
3   - *
4   - * Action container. Parent for [[ArgumentParser]] and [[ArgumentGroup]]
5   - **/
6   -
7   -'use strict';
8   -
9   -var format = require('util').format;
10   -var _ = require('underscore');
11   -
12   -_.str = require('underscore.string');
13   -
14   -// Constants
15   -var $$ = require('./const');
16   -
17   -//Actions
18   -var ActionHelp = require('./action/help');
19   -var ActionAppend = require('./action/append');
20   -var ActionAppendConstant = require('./action/append/constant');
21   -var ActionCount = require('./action/count');
22   -var ActionStore = require('./action/store');
23   -var ActionStoreConstant = require('./action/store/constant');
24   -var ActionStoreTrue = require('./action/store/true');
25   -var ActionStoreFalse = require('./action/store/false');
26   -var ActionVersion = require('./action/version');
27   -var ActionSubparsers = require('./action/subparsers');
28   -
29   -// Errors
30   -var argumentErrorHelper = require('./argument/error');
31   -
32   -
33   -
34   -/**
35   - * new ActionContainer(options)
36   - *
37   - * Action container. Parent for [[ArgumentParser]] and [[ArgumentGroup]]
38   - *
39   - * ##### Options:
40   - *
41   - * - `description` -- A description of what the program does
42   - * - `prefixChars` -- Characters that prefix optional arguments
43   - * - `argumentDefault` -- The default value for all arguments
44   - * - `conflictHandler` -- The conflict handler to use for duplicate arguments
45   - **/
46   -var ActionContainer = module.exports = function ActionContainer(options) {
47   - options = options || {};
48   -
49   - this.description = options.description;
50   - this.argumentDefault = options.argumentDefault;
51   - this.prefixChars = options.prefixChars || '';
52   - this.conflictHandler = options.conflictHandler;
53   -
54   - // set up registries
55   - this._registries = {};
56   -
57   - // register actions
58   - this.register('action', null, ActionStore);
59   - this.register('action', 'store', ActionStore);
60   - this.register('action', 'storeConst', ActionStoreConstant);
61   - this.register('action', 'storeTrue', ActionStoreTrue);
62   - this.register('action', 'storeFalse', ActionStoreFalse);
63   - this.register('action', 'append', ActionAppend);
64   - this.register('action', 'appendConst', ActionAppendConstant);
65   - this.register('action', 'count', ActionCount);
66   - this.register('action', 'help', ActionHelp);
67   - this.register('action', 'version', ActionVersion);
68   - this.register('action', 'parsers', ActionSubparsers);
69   -
70   - // raise an exception if the conflict handler is invalid
71   - this._getHandler();
72   -
73   - // action storage
74   - this._actions = [];
75   - this._optionStringActions = {};
76   -
77   - // groups
78   - this._actionGroups = [];
79   - this._mutuallyExclusiveGroups = [];
80   -
81   - // defaults storage
82   - this._defaults = {};
83   -
84   - // determines whether an "option" looks like a negative number
85   - // -1, -1.5 -5e+4
86   - this._regexpNegativeNumber = new RegExp('^[-]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$');
87   -
88   - // whether or not there are any optionals that look like negative
89   - // numbers -- uses a list so it can be shared and edited
90   - this._hasNegativeNumberOptionals = [];
91   -};
92   -
93   -// Groups must be required, then ActionContainer already defined
94   -var ArgumentGroup = require('./argument/group');
95   -var MutuallyExclusiveGroup = require('./argument/exclusive');
96   -
97   -//
98   -// Registration methods
99   -//
100   -
101   -/**
102   - * ActionContainer#register(registryName, value, object) -> Void
103   - * - registryName (String) : object type action|type
104   - * - value (string) : keyword
105   - * - object (Object|Function) : handler
106   - *
107   - * Register handlers
108   - **/
109   -ActionContainer.prototype.register = function (registryName, value, object) {
110   - this._registries[registryName] = this._registries[registryName] || {};
111   - this._registries[registryName][value] = object;
112   -};
113   -
114   -ActionContainer.prototype._registryGet = function (registryName, value, defaultValue) {
115   - if (3 > arguments.length) {
116   - defaultValue = null;
117   - }
118   - return this._registries[registryName][value] || defaultValue;
119   -};
120   -
121   -//
122   -// Namespace default accessor methods
123   -//
124   -
125   -/**
126   - * ActionContainer#setDefaults(options) -> Void
127   - * - options (object):hash of options see [[Action.new]]
128   - *
129   - * Set defaults
130   - **/
131   -ActionContainer.prototype.setDefaults = function (options) {
132   - options = options || {};
133   - for (var property in options) {
134   - this._defaults[property] = options[property];
135   - }
136   -
137   - // if these defaults match any existing arguments, replace the previous
138   - // default on the object with the new one
139   - this._actions.forEach(function (action) {
140   - if (action.dest in options) {
141   - action.defaultValue = options[action.dest];
142   - }
143   - });
144   -};
145   -
146   -/**
147   - * ActionContainer#getDefault(dest) -> Mixed
148   - * - dest (string): action destination
149   - *
150   - * Return action default value
151   - **/
152   -ActionContainer.prototype.getDefault = function (dest) {
153   - var result = (_.has(this._defaults, dest)) ? this._defaults[dest] : null;
154   -
155   - this._actions.forEach(function (action) {
156   - if (action.dest === dest && _.has(action, 'defaultValue')) {
157   - result = action.defaultValue;
158   - }
159   - });
160   -
161   - return result;
162   -};
163   -//
164   -// Adding argument actions
165   -//
166   -
167   -/**
168   - * ActionContainer#addArgument(args, options) -> Object
169   - * - args (Array): array of argument keys
170   - * - options (Object): action objects see [[Action.new]]
171   - *
172   - * #### Examples
173   - * - addArgument([-f, --foo], {action:'store', defaultValue=1, ...})
174   - * - addArgument(['bar'], action: 'store', nargs:1, ...})
175   - **/
176   -ActionContainer.prototype.addArgument = function (args, options) {
177   - args = args;
178   - options = options || {};
179   -
180   - if (!_.isArray(args)) {
181   - throw new TypeError('addArgument first argument should be an array');
182   - }
183   - if (!_.isObject(options) || _.isArray(options)) {
184   - throw new TypeError('addArgument second argument should be a hash');
185   - }
186   -
187   - // if no positional args are supplied or only one is supplied and
188   - // it doesn't look like an option string, parse a positional argument
189   - if (!args || args.length === 1 && this.prefixChars.indexOf(args[0][0]) < 0) {
190   - if (args && !!options.dest) {
191   - throw new Error('dest supplied twice for positional argument');
192   - }
193   - options = this._getPositional(args, options);
194   -
195   - // otherwise, we're adding an optional argument
196   - } else {
197   - options = this._getOptional(args, options);
198   - }
199   -
200   - // if no default was supplied, use the parser-level default
201   - if (_.isUndefined(options.defaultValue)) {
202   - var dest = options.dest;
203   - if (_.has(this._defaults, dest)) {
204   - options.defaultValue = this._defaults[dest];
205   - } else if (!_.isUndefined(this.argumentDefault)) {
206   - options.defaultValue = this.argumentDefault;
207   - }
208   - }
209   -
210   - // create the action object, and add it to the parser
211   - var ActionClass = this._popActionClass(options);
212   - if (! _.isFunction(ActionClass)) {
213   - throw new Error(format('Unknown action "%s".', ActionClass));
214   - }
215   - var action = new ActionClass(options);
216   -
217   - // throw an error if the action type is not callable
218   - var typeFunction = this._registryGet('type', action.type, action.type);
219   - if (!_.isFunction(typeFunction)) {
220   - throw new Error(format('"%s" is not callable', typeFunction));
221   - }
222   -
223   - return this._addAction(action);
224   -};
225   -
226   -/**
227   - * ActionContainer#addArgumentGroup(options) -> ArgumentGroup
228   - * - options (Object): hash of options see [[ArgumentGroup.new]]
229   - *
230   - * Create new arguments groups
231   - **/
232   -ActionContainer.prototype.addArgumentGroup = function (options) {
233   - var group = new ArgumentGroup(this, options);
234   - this._actionGroups.push(group);
235   - return group;
236   -};
237   -
238   -/**
239   - * ActionContainer#addMutuallyExclusiveGroup(options) -> ArgumentGroup
240   - * - options (Object): {required: false}
241   - *
242   - * Create new mutual exclusive groups
243   - **/
244   -ActionContainer.prototype.addMutuallyExclusiveGroup = function (options) {
245   - var group = new MutuallyExclusiveGroup(this, options);
246   - this._mutuallyExclusiveGroups.push(group);
247   - return group;
248   -};
249   -
250   -ActionContainer.prototype._addAction = function (action) {
251   - var self = this;
252   -
253   - // resolve any conflicts
254   - this._checkConflict(action);
255   -
256   - // add to actions list
257   - this._actions.push(action);
258   - action.container = this;
259   -
260   - // index the action by any option strings it has
261   - action.optionStrings.forEach(function (optionString) {
262   - self._optionStringActions[optionString] = action;
263   - });
264   -
265   - // set the flag if any option strings look like negative numbers
266   - action.optionStrings.forEach(function (optionString) {
267   - if (optionString.match(self._regexpNegativeNumber)) {
268   - if (!_.any(self._hasNegativeNumberOptionals)) {
269   - self._hasNegativeNumberOptionals.push(true);
270   - }
271   - }
272   - });
273   -
274   - // return the created action
275   - return action;
276   -};
277   -
278   -ActionContainer.prototype._removeAction = function (action) {
279   - var actionIndex = this._actions.indexOf(action);
280   - if (actionIndex >= 0) {
281   - this._actions.splice(actionIndex, 1);
282   - }
283   -};
284   -
285   -ActionContainer.prototype._addContainerActions = function (container) {
286   - // collect groups by titles
287   - var titleGroupMap = {};
288   - this._actionGroups.forEach(function (group) {
289   - if (titleGroupMap[group.title]) {
290   - throw new Error(format('Cannot merge actions - two groups are named "%s".', group.title));
291   - }
292   - titleGroupMap[group.title] = group;
293   - });
294   -
295   - // map each action to its group
296   - var groupMap = {};
297   - function actionHash(action) {
298   - // unique (hopefully?) string suitable as dictionary key
299   - return action.getName();
300   - }
301   - container._actionGroups.forEach(function (group) {
302   - // if a group with the title exists, use that, otherwise
303   - // create a new group matching the container's group
304   - if (!titleGroupMap[group.title]) {
305   - titleGroupMap[group.title] = this.addArgumentGroup({
306   - title: group.title,
307   - description: group.description
308   - });
309   - }
310   -
311   - // map the actions to their new group
312   - group._groupActions.forEach(function (action) {
313   - groupMap[actionHash(action)] = titleGroupMap[group.title];
314   - });
315   - }, this);
316   -
317   - // add container's mutually exclusive groups
318   - // NOTE: if add_mutually_exclusive_group ever gains title= and
319   - // description= then this code will need to be expanded as above
320   - var mutexGroup;
321   - container._mutuallyExclusiveGroups.forEach(function (group) {
322   - mutexGroup = this.addMutuallyExclusiveGroup({
323   - required: group.required
324   - });
325   - // map the actions to their new mutex group
326   - group._groupActions.forEach(function (action) {
327   - groupMap[actionHash(action)] = mutexGroup;
328   - });
329   - }, this); // forEach takes a 'this' argument
330   -
331   - // add all actions to this container or their group
332   - container._actions.forEach(function (action) {
333   - var key = actionHash(action);
334   - if (!!groupMap[key]) {
335   - groupMap[key]._addAction(action);
336   - }
337   - else
338   - {
339   - this._addAction(action);
340   - }
341   - });
342   -};
343   -
344   -ActionContainer.prototype._getPositional = function (dest, options) {
345   - if (_.isArray(dest)) {
346   - dest = _.first(dest);
347   - }
348   - // make sure required is not specified
349   - if (options.required) {
350   - throw new Error('"required" is an invalid argument for positionals.');
351   - }
352   -
353   - // mark positional arguments as required if at least one is
354   - // always required
355   - if (options.nargs !== $$.OPTIONAL && options.nargs !== $$.ZERO_OR_MORE) {
356   - options.required = true;
357   - }
358   - if (options.nargs === $$.ZERO_OR_MORE && options.defaultValue === undefined) {
359   - options.required = true;
360   - }
361   -
362   - // return the keyword arguments with no option strings
363   - options.dest = dest;
364   - options.optionStrings = [];
365   - return options;
366   -};
367   -
368   -ActionContainer.prototype._getOptional = function (args, options) {
369   - var prefixChars = this.prefixChars;
370   - var optionStrings = [];
371   - var optionStringsLong = [];
372   -
373   - // determine short and long option strings
374   - args.forEach(function (optionString) {
375   - // error on strings that don't start with an appropriate prefix
376   - if (prefixChars.indexOf(optionString[0]) < 0) {
377   - throw new Error(format('Invalid option string "%s": must start with a "%s".',
378   - optionString,
379   - prefixChars
380   - ));
381   - }
382   -
383   - // strings starting with two prefix characters are long options
384   - optionStrings.push(optionString);
385   - if (optionString.length > 1 && prefixChars.indexOf(optionString[1]) >= 0) {
386   - optionStringsLong.push(optionString);
387   - }
388   - });
389   -
390   - // infer dest, '--foo-bar' -> 'foo_bar' and '-x' -> 'x'
391   - var dest = options.dest || null;
392   - delete options.dest;
393   -
394   - if (!dest) {
395   - var optionStringDest = optionStringsLong.length ? optionStringsLong[0] :optionStrings[0];
396   - dest = _.str.strip(optionStringDest, this.prefixChars);
397   -
398   - if (dest.length === 0) {
399   - throw new Error(
400   - format('dest= is required for options like "%s"', optionStrings.join(', '))
401   - );
402   - }
403   - dest = dest.replace(/-/g, '_');
404   - }
405   -
406   - // return the updated keyword arguments
407   - options.dest = dest;
408   - options.optionStrings = optionStrings;
409   -
410   - return options;
411   -};
412   -
413   -ActionContainer.prototype._popActionClass = function (options, defaultValue) {
414   - defaultValue = defaultValue || null;
415   -
416   - var action = (options.action || defaultValue);
417   - delete options.action;
418   -
419   - var actionClass = this._registryGet('action', action, action);
420   - return actionClass;
421   -};
422   -
423   -ActionContainer.prototype._getHandler = function () {
424   - var handlerString = this.conflictHandler;
425   - var handlerFuncName = "_handleConflict" + _.str.capitalize(handlerString);
426   - var func = this[handlerFuncName];
427   - if (typeof func === 'undefined') {
428   - var msg = "invalid conflict resolution value: " + handlerString;
429   - throw new Error(msg);
430   - } else {
431   - return func;
432   - }
433   -};
434   -
435   -ActionContainer.prototype._checkConflict = function (action) {
436   - var optionStringActions = this._optionStringActions;
437   - var conflictOptionals = [];
438   -
439   - // find all options that conflict with this option
440   - // collect pairs, the string, and an existing action that it conflicts with
441   - action.optionStrings.forEach(function (optionString) {
442   - var conflOptional = optionStringActions[optionString];
443   - if (typeof conflOptional !== 'undefined') {
444   - conflictOptionals.push([optionString, conflOptional]);
445   - }
446   - });
447   -
448   - if (conflictOptionals.length > 0) {
449   - var conflictHandler = this._getHandler();
450   - conflictHandler.call(this, action, conflictOptionals);
451   - }
452   -};
453   -
454   -ActionContainer.prototype._handleConflictError = function (action, conflOptionals) {
455   - var conflicts = _.map(conflOptionals, function (pair) {return pair[0]; });
456   - conflicts = conflicts.join(', ');
457   - throw argumentErrorHelper(
458   - action,
459   - format('Conflicting option string(s): %s', conflicts)
460   - );
461   -};
462   -
463   -ActionContainer.prototype._handleConflictResolve = function (action, conflOptionals) {
464   - // remove all conflicting options
465   - var self = this;
466   - conflOptionals.forEach(function (pair) {
467   - var optionString = pair[0];
468   - var conflictingAction = pair[1];
469   - // remove the conflicting option string
470   - var i = conflictingAction.optionStrings.indexOf(optionString);
471   - if (i >= 0) {
472   - conflictingAction.optionStrings.splice(i, 1);
473   - }
474   - delete self._optionStringActions[optionString];
475   - // if the option now has no option string, remove it from the
476   - // container holding it
477   - if (conflictingAction.optionStrings.length === 0) {
478   - conflictingAction.container._removeAction(conflictingAction);
479   - }
480   - });
481   -};
images/node_modules/argparse/lib/argparse.js deleted 100644 → 0
1   -'use strict';
2   -
3   -module.exports.ArgumentParser = require('./argument_parser.js');
4   -module.exports.Namespace = require('./namespace');
5   -module.exports.Action = require('./action');
6   -module.exports.HelpFormatter = require('./help/formatter.js');
7   -module.exports.Const = require('./const.js');
8   -
9   -module.exports.ArgumentDefaultsHelpFormatter =
10   - require('./help/added_formatters.js').ArgumentDefaultsHelpFormatter;
11   -module.exports.RawDescriptionHelpFormatter =
12   - require('./help/added_formatters.js').RawDescriptionHelpFormatter;
13   -module.exports.RawTextHelpFormatter =
14   - require('./help/added_formatters.js').RawTextHelpFormatter;
images/node_modules/argparse/lib/argument/error.js deleted 100644 → 0
1   -'use strict';
2   -
3   -
4   -var format = require('util').format;
5   -
6   -
7   -var ERR_CODE = 'ARGError';
8   -
9   -/*:nodoc:*
10   - * argumentError(argument, message) -> TypeError
11   - * - argument (Object): action with broken argument
12   - * - message (String): error message
13   - *
14   - * Error format helper. An error from creating or using an argument
15   - * (optional or positional). The string value of this exception
16   - * is the message, augmented with information
17   - * about the argument that caused it.
18   - *
19   - * #####Example
20   - *
21   - * var argumentErrorHelper = require('./argument/error');
22   - * if (conflictOptionals.length > 0) {
23   - * throw argumentErrorHelper(
24   - * action,
25   - * format('Conflicting option string(s): %s', conflictOptionals.join(', '))
26   - * );
27   - * }
28   - *
29   - **/
30   -module.exports = function (argument, message) {
31   - var argumentName = null;
32   - var errMessage;
33   - var err;
34   -
35   - if (argument.getName) {
36   - argumentName = argument.getName();
37   - } else {
38   - argumentName = '' + argument;
39   - }
40   -
41   - if (!argumentName) {
42   - errMessage = message;
43   - } else {
44   - errMessage = format('argument "%s": %s', argumentName, message);
45   - }
46   -
47   - err = new TypeError(errMessage);
48   - err.code = ERR_CODE;
49   - return err;
50   -};
images/node_modules/argparse/lib/argument/exclusive.js deleted 100644 → 0
1   -/** internal
2   - * class MutuallyExclusiveGroup
3   - *
4   - * Group arguments.
5   - * By default, ArgumentParser groups command-line arguments
6   - * into “positional arguments” and “optional arguments”
7   - * when displaying help messages. When there is a better
8   - * conceptual grouping of arguments than this default one,
9   - * appropriate groups can be created using the addArgumentGroup() method
10   - *
11   - * This class inherited from [[ArgumentContainer]]
12   - **/
13   -'use strict';
14   -
15   -var util = require('util');
16   -
17   -var ArgumentGroup = require('./group');
18   -
19   -/**
20   - * new MutuallyExclusiveGroup(container, options)
21   - * - container (object): main container
22   - * - options (object): options.required -> true/false
23   - *
24   - * `required` could be an argument itself, but making it a property of
25   - * the options argument is more consistent with the JS adaptation of the Python)
26   - **/
27   -var MutuallyExclusiveGroup = module.exports = function MutuallyExclusiveGroup(container, options) {
28   - var required;
29   - options = options || {};
30   - required = options.required || false;
31   - ArgumentGroup.call(this, container);
32   - this.required = required;
33   -
34   -};
35   -util.inherits(MutuallyExclusiveGroup, ArgumentGroup);
36   -
37   -
38   -MutuallyExclusiveGroup.prototype._addAction = function (action) {
39   - var msg;
40   - if (action.required) {
41   - msg = 'mutually exclusive arguments must be optional';
42   - throw new Error(msg);
43   - }
44   - action = this._container._addAction(action);
45   - this._groupActions.push(action);
46   - return action;
47   -};
48   -
49   -
50   -MutuallyExclusiveGroup.prototype._removeAction = function (action) {
51   - this._container._removeAction(action);
52   - this._groupActions.remove(action);
53   -};
54   -
images/node_modules/argparse/lib/argument/group.js deleted 100644 → 0
1   -/** internal
2   - * class ArgumentGroup
3   - *
4   - * Group arguments.
5   - * By default, ArgumentParser groups command-line arguments
6   - * into “positional arguments” and “optional arguments”
7   - * when displaying help messages. When there is a better
8   - * conceptual grouping of arguments than this default one,
9   - * appropriate groups can be created using the addArgumentGroup() method
10   - *
11   - * This class inherited from [[ArgumentContainer]]
12   - **/
13   -'use strict';
14   -
15   -var util = require('util');
16   -
17   -var ActionContainer = require('../action_container');
18   -
19   -
20   -/**
21   - * new ArgumentGroup(container, options)
22   - * - container (object): main container
23   - * - options (object): hash of group options
24   - *
25   - * #### options
26   - * - **prefixChars** group name prefix
27   - * - **argumentDefault** default argument value
28   - * - **title** group title
29   - * - **description** group description
30   - *
31   - **/
32   -var ArgumentGroup = module.exports = function ArgumentGroup(container, options) {
33   -
34   - options = options || {};
35   -
36   - // add any missing keyword arguments by checking the container
37   - options.conflictHandler = (options.conflictHandler || container.conflictHandler);
38   - options.prefixChars = (options.prefixChars || container.prefixChars);
39   - options.argumentDefault = (options.argumentDefault || container.argumentDefault);
40   -
41   - ActionContainer.call(this, options);
42   -
43   - // group attributes
44   - this.title = options.title;
45   - this._groupActions = [];
46   -
47   - // share most attributes with the container
48   - this._container = container;
49   - this._registries = container._registries;
50   - this._actions = container._actions;
51   - this._optionStringActions = container._optionStringActions;
52   - this._defaults = container._defaults;
53   - this._hasNegativeNumberOptionals = container._hasNegativeNumberOptionals;
54   - this._mutuallyExclusiveGroups = container._mutuallyExclusiveGroups;
55   -};
56   -util.inherits(ArgumentGroup, ActionContainer);
57   -
58   -
59   -ArgumentGroup.prototype._addAction = function (action) {
60   - // Parent add action
61   - action = ActionContainer.prototype._addAction.call(this, action);
62   - this._groupActions.push(action);
63   - return action;
64   -};
65   -
66   -
67   -ArgumentGroup.prototype._removeAction = function (action) {
68   - // Parent remove action
69   - ActionContainer.prototype._removeAction.call(this, action);
70   - var actionIndex = this._groupActions.indexOf(action);
71   - if (actionIndex >= 0) {
72   - this._groupActions.splice(actionIndex, 1);
73   - }
74   -};
75   -
images/node_modules/argparse/lib/argument_parser.js deleted 100644 → 0
1   -/**
2   - * class ArgumentParser
3   - *
4   - * Object for parsing command line strings into js objects.
5   - *
6   - * Inherited from [[ActionContainer]]
7   - **/
8   -'use strict';
9   -
10   -var util = require('util');
11   -var format = require('util').format;
12   -var Path = require('path');
13   -
14   -var _ = require('underscore');
15   -_.str = require('underscore.string');
16   -
17   -// Constants
18   -var $$ = require('./const');
19   -
20   -var ActionContainer = require('./action_container');
21   -
22   -// Errors
23   -var argumentErrorHelper = require('./argument/error');
24   -
25   -var HelpFormatter = require('./help/formatter');
26   -
27   -var Namespace = require('./namespace');
28   -
29   -
30   -/**
31   - * new ArgumentParser(options)
32   - *
33   - * Create a new ArgumentParser object.
34   - *
35   - * ##### Options:
36   - * - `prog` The name of the program (default: Path.basename(process.argv[1]))
37   - * - `usage` A usage message (default: auto-generated from arguments)
38   - * - `description` A description of what the program does
39   - * - `epilog` Text following the argument descriptions
40   - * - `parents` Parsers whose arguments should be copied into this one
41   - * - `formatterClass` HelpFormatter class for printing help messages
42   - * - `prefixChars` Characters that prefix optional arguments
43   - * - `fromfilePrefixChars` Characters that prefix files containing additional arguments
44   - * - `argumentDefault` The default value for all arguments
45   - * - `addHelp` Add a -h/-help option
46   - * - `conflictHandler` Specifies how to handle conflicting argument names
47   - * - `debug` Enable debug mode. Argument errors throw exception in
48   - * debug mode and process.exit in normal. Used for development and
49   - * testing (default: false)
50   - *
51   - * See also [original guide][1]
52   - *
53   - * [1]:http://docs.python.org/dev/library/argparse.html#argumentparser-objects
54   - **/
55   -var ArgumentParser = module.exports = function ArgumentParser(options) {
56   - var self = this;
57   - options = options || {};
58   -
59   - options.description = (options.description || null);
60   - options.argumentDefault = (options.argumentDefault || null);
61   - options.prefixChars = (options.prefixChars || '-');
62   - options.conflictHandler = (options.conflictHandler || 'error');
63   - ActionContainer.call(this, options);
64   -
65   - options.addHelp = (options.addHelp === undefined || !!options.addHelp);
66   - options.parents = (options.parents || []);
67   - // default program name
68   - options.prog = (options.prog || Path.basename(process.argv[1]));
69   - this.prog = options.prog;
70   - this.usage = options.usage;
71   - this.epilog = options.epilog;
72   - this.version = options.version;
73   -
74   - this.debug = (options.debug === true);
75   -
76   - this.formatterClass = (options.formatterClass || HelpFormatter);
77   - this.fromfilePrefixChars = options.fromfilePrefixChars || null;
78   - this._positionals = this.addArgumentGroup({title: 'Positional arguments'});
79   - this._optionals = this.addArgumentGroup({title: 'Optional arguments'});
80   - this._subparsers = null;
81   -
82   - // register types
83   - var FUNCTION_IDENTITY = function (o) {
84   - return o;
85   - };
86   - this.register('type', 'auto', FUNCTION_IDENTITY);
87   - this.register('type', null, FUNCTION_IDENTITY);
88   - this.register('type', 'int', function (x) {
89   - var result = parseInt(x, 10);
90   - if (isNaN(result)) {
91   - throw new Error(x + ' is not a valid integer.');
92   - }
93   - return result;
94   - });
95   - this.register('type', 'float', function (x) {
96   - var result = parseFloat(x);
97   - if (isNaN(result)) {
98   - throw new Error(x + ' is not a valid float.');
99   - }
100   - return result;
101   - });
102   - this.register('type', 'string', function (x) {
103   - return '' + x;
104   - });
105   -
106   - // add help and version arguments if necessary
107   - var defaultPrefix = (this.prefixChars.indexOf('-') > -1) ? '-' : this.prefixChars[0];
108   - if (options.addHelp) {
109   - this.addArgument(
110   - [defaultPrefix + 'h', defaultPrefix + defaultPrefix + 'help'],
111   - {
112   - action: 'help',
113   - defaultValue: $$.SUPPRESS,
114   - help: 'Show this help message and exit.'
115   - }
116   - );
117   - }
118   - if (this.version !== undefined) {
119   - this.addArgument(
120   - [defaultPrefix + 'v', defaultPrefix + defaultPrefix + 'version'],
121   - {
122   - action: 'version',
123   - version: this.version,
124   - defaultValue: $$.SUPPRESS,
125   - help: "Show program's version number and exit."
126   - }
127   - );
128   - }
129   -
130   - // add parent arguments and defaults
131   - options.parents.forEach(function (parent) {
132   - self._addContainerActions(parent);
133   - if (parent._defaults !== undefined) {
134   - for (var defaultKey in parent._defaults) {
135   - if (parent._defaults.hasOwnProperty(defaultKey)) {
136   - self._defaults[defaultKey] = parent._defaults[defaultKey];
137   - }
138   - }
139   - }
140   - });
141   -
142   -};
143   -util.inherits(ArgumentParser, ActionContainer);
144   -
145   -/**
146   - * ArgumentParser#addSubparsers(options) -> [[ActionSubparsers]]
147   - * - options (object): hash of options see [[ActionSubparsers.new]]
148   - *
149   - * See also [subcommands][1]
150   - *
151   - * [1]:http://docs.python.org/dev/library/argparse.html#sub-commands
152   - **/
153   -ArgumentParser.prototype.addSubparsers = function (options) {
154   - if (!!this._subparsers) {
155   - this.error('Cannot have multiple subparser arguments.');
156   - }
157   -
158   - options = options || {};
159   - options.debug = (this.debug === true);
160   - options.optionStrings = [];
161   - options.parserClass = (options.parserClass || ArgumentParser);
162   -
163   -
164   - if (!!options.title || !!options.description) {
165   -
166   - this._subparsers = this.addArgumentGroup({
167   - title: (options.title || 'subcommands'),
168   - description: options.description
169   - });
170   - delete options.title;
171   - delete options.description;
172   -
173   - } else {
174   - this._subparsers = this._positionals;
175   - }
176   -
177   - // prog defaults to the usage message of this parser, skipping
178   - // optional arguments and with no "usage:" prefix
179   - if (!options.prog) {
180   - var formatter = this._getFormatter();
181   - var positionals = this._getPositionalActions();
182   - var groups = this._mutuallyExclusiveGroups;
183   - formatter.addUsage(this.usage, positionals, groups, '');
184   - options.prog = _.str.strip(formatter.formatHelp());
185   - }
186   -
187   - // create the parsers action and add it to the positionals list
188   - var ParsersClass = this._popActionClass(options, 'parsers');
189   - var action = new ParsersClass(options);
190   - this._subparsers._addAction(action);
191   -
192   - // return the created parsers action
193   - return action;
194   -};
195   -
196   -ArgumentParser.prototype._addAction = function (action) {
197   - if (action.isOptional()) {
198   - this._optionals._addAction(action);
199   - } else {
200   - this._positionals._addAction(action);
201   - }
202   - return action;
203   -};
204   -
205   -ArgumentParser.prototype._getOptionalActions = function () {
206   - return this._actions.filter(function (action) {
207   - return action.isOptional();
208   - });
209   -};
210   -
211   -ArgumentParser.prototype._getPositionalActions = function () {
212   - return this._actions.filter(function (action) {
213   - return action.isPositional();
214   - });
215   -};
216   -
217   -
218   -/**
219   - * ArgumentParser#parseArgs(args, namespace) -> Namespace|Object
220   - * - args (array): input elements
221   - * - namespace (Namespace|Object): result object
222   - *
223   - * Parsed args and throws error if some arguments are not recognized
224   - *
225   - * See also [original guide][1]
226   - *
227   - * [1]:http://docs.python.org/dev/library/argparse.html#the-parse-args-method
228   - **/
229   -ArgumentParser.prototype.parseArgs = function (args, namespace) {
230   - var argv;
231   - var result = this.parseKnownArgs(args, namespace);
232   -
233   - args = result[0];
234   - argv = result[1];
235   - if (argv && argv.length > 0) {
236   - this.error(
237   - format('Unrecognized arguments: %s.', argv.join(' '))
238   - );
239   - }
240   - return args;
241   -};
242   -
243   -/**
244   - * ArgumentParser#parseKnownArgs(args, namespace) -> array
245   - * - args (array): input options
246   - * - namespace (Namespace|Object): result object
247   - *
248   - * Parse known arguments and return tuple of result object
249   - * and unknown args
250   - *
251   - * See also [original guide][1]
252   - *
253   - * [1]:http://docs.python.org/dev/library/argparse.html#partial-parsing
254   - **/
255   -ArgumentParser.prototype.parseKnownArgs = function (args, namespace) {
256   - var self = this;
257   -
258   - // args default to the system args
259   - args = args || process.argv.slice(2);
260   -
261   - // default Namespace built from parser defaults
262   - namespace = namespace || new Namespace();
263   -
264   - self._actions.forEach(function (action) {
265   - if (action.dest !== $$.SUPPRESS) {
266   - if (!_.has(namespace, action.dest)) {
267   - if (action.defaultValue !== $$.SUPPRESS) {
268   - var defaultValue = action.defaultValue;
269   - if (_.isString(action.defaultValue)) {
270   - defaultValue = self._getValue(action, defaultValue);
271   - }
272   - namespace[action.dest] = defaultValue;
273   - }
274   - }
275   - }
276   - });
277   -
278   - _.keys(self._defaults).forEach(function (dest) {
279   - namespace[dest] = self._defaults[dest];
280   - });
281   -
282   - // parse the arguments and exit if there are any errors
283   - try {
284   - var res = this._parseKnownArgs(args, namespace);
285   -
286   - namespace = res[0];
287   - args = res[1];
288   - if (_.has(namespace, $$._UNRECOGNIZED_ARGS_ATTR)) {
289   - args = _.union(args, namespace[$$._UNRECOGNIZED_ARGS_ATTR]);
290   - delete namespace[$$._UNRECOGNIZED_ARGS_ATTR];
291   - }
292   - return [namespace, args];
293   - } catch (e) {
294   - this.error(e);
295   - }
296   -};
297   -
298   -ArgumentParser.prototype._parseKnownArgs = function (argStrings, namespace) {
299   - var self = this;
300   -
301   - var extras = [];
302   -
303   - // replace arg strings that are file references
304   - if (this.fromfilePrefixChars !== null) {
305   - argStrings = this._readArgsFromFiles(argStrings);
306   - }
307   - // map all mutually exclusive arguments to the other arguments
308   - // they can't occur with
309   - // Python has 'conflicts = action_conflicts.setdefault(mutex_action, [])'
310   - // though I can't conceive of a way in which an action could be a member
311   - // of two different mutually exclusive groups.
312   -
313   - function actionHash(action) {
314   - // some sort of hashable key for this action
315   - // action itself cannot be a key in actionConflicts
316   - // I think getName() (join of optionStrings) is unique enough
317   - return action.getName();
318   - }
319   -
320   - var conflicts, key;
321   - var actionConflicts = {};
322   -
323   - this._mutuallyExclusiveGroups.forEach(function (mutexGroup) {
324   - mutexGroup._groupActions.forEach(function (mutexAction, i, groupActions) {
325   - key = actionHash(mutexAction);
326   - if (!_.has(actionConflicts, key)) {
327   - actionConflicts[key] = [];
328   - }
329   - conflicts = actionConflicts[key];
330   - conflicts.push.apply(conflicts, groupActions.slice(0, i));
331   - conflicts.push.apply(conflicts, groupActions.slice(i + 1));
332   - });
333   - });
334   -
335   - // find all option indices, and determine the arg_string_pattern
336   - // which has an 'O' if there is an option at an index,
337   - // an 'A' if there is an argument, or a '-' if there is a '--'
338   - var optionStringIndices = {};
339   -
340   - var argStringPatternParts = [];
341   -
342   - argStrings.forEach(function (argString, argStringIndex) {
343   - if (argString === '--') {
344   - argStringPatternParts.push('-');
345   - while (argStringIndex < argStrings.length) {
346   - argStringPatternParts.push('A');
347   - argStringIndex++;
348   - }
349   - }
350   - // otherwise, add the arg to the arg strings
351   - // and note the index if it was an option
352   - else {
353   - var pattern;
354   - var optionTuple = self._parseOptional(argString);
355   - if (!optionTuple) {
356   - pattern = 'A';
357   - }
358   - else {
359   - optionStringIndices[argStringIndex] = optionTuple;
360   - pattern = 'O';
361   - }
362   - argStringPatternParts.push(pattern);
363   - }
364   - });
365   - var argStringsPattern = argStringPatternParts.join('');
366   -
367   - var seenActions = [];
368   - var seenNonDefaultActions = [];
369   -
370   -
371   - function takeAction(action, argumentStrings, optionString) {
372   - seenActions.push(action);
373   - var argumentValues = self._getValues(action, argumentStrings);
374   -
375   - // error if this argument is not allowed with other previously
376   - // seen arguments, assuming that actions that use the default
377   - // value don't really count as "present"
378   - if (argumentValues !== action.defaultValue) {
379   - seenNonDefaultActions.push(action);
380   - if (!!actionConflicts[actionHash(action)]) {
381   - actionConflicts[actionHash(action)].forEach(function (actionConflict) {
382   - if (seenNonDefaultActions.indexOf(actionConflict) >= 0) {
383   - throw argumentErrorHelper(
384   - action,
385   - format('Not allowed with argument "%s".', actionConflict.getName())
386   - );
387   - }
388   - });
389   - }
390   - }
391   -
392   - if (argumentValues !== $$.SUPPRESS) {
393   - action.call(self, namespace, argumentValues, optionString);
394   - }
395   - }
396   -
397   - function consumeOptional(startIndex) {
398   - // get the optional identified at this index
399   - var optionTuple = optionStringIndices[startIndex];
400   - var action = optionTuple[0];
401   - var optionString = optionTuple[1];
402   - var explicitArg = optionTuple[2];
403   -
404   - // identify additional optionals in the same arg string
405   - // (e.g. -xyz is the same as -x -y -z if no args are required)
406   - var actionTuples = [];
407   -
408   - var args, argCount, start, stop;
409   -
410   - while (true) {
411   - if (!action) {
412   - extras.push(argStrings[startIndex]);
413   - return startIndex + 1;
414   - }
415   - if (!!explicitArg) {
416   - argCount = self._matchArgument(action, 'A');
417   -
418   - // if the action is a single-dash option and takes no
419   - // arguments, try to parse more single-dash options out
420   - // of the tail of the option string
421   - var chars = self.prefixChars;
422   - if (argCount === 0 && chars.indexOf(optionString[1]) < 0) {
423   - actionTuples.push([action, [], optionString]);
424   - optionString = optionString[0] + explicitArg[0];
425   - var newExplicitArg = explicitArg.slice(1) || null;
426   - var optionalsMap = self._optionStringActions;
427   -
428   - if (_.keys(optionalsMap).indexOf(optionString) >= 0) {
429   - action = optionalsMap[optionString];
430   - explicitArg = newExplicitArg;
431   - }
432   - else {
433   - var msg = 'ignored explicit argument %r';
434   - throw argumentErrorHelper(action, msg);
435   - }
436   - }
437   - // if the action expect exactly one argument, we've
438   - // successfully matched the option; exit the loop
439   - else if (argCount === 1) {
440   - stop = startIndex + 1;
441   - args = [explicitArg];
442   - actionTuples.push([action, args, optionString]);
443   - break;
444   - }
445   - // error if a double-dash option did not use the
446   - // explicit argument
447   - else {
448   - var message = 'ignored explicit argument %r';
449   - throw argumentErrorHelper(action, _.str.sprintf(message, explicitArg));
450   - }
451   - }
452   - // if there is no explicit argument, try to match the
453   - // optional's string arguments with the following strings
454   - // if successful, exit the loop
455   - else {
456   -
457   - start = startIndex + 1;
458   - var selectedPatterns = argStringsPattern.substr(start);
459   -
460   - argCount = self._matchArgument(action, selectedPatterns);
461   - stop = start + argCount;
462   -
463   -
464   - args = argStrings.slice(start, stop);
465   -
466   - actionTuples.push([action, args, optionString]);
467   - break;
468   - }
469   -
470   - }
471   -
472   - // add the Optional to the list and return the index at which
473   - // the Optional's string args stopped
474   - if (actionTuples.length < 1) {
475   - throw new Error('length should be > 0');
476   - }
477   - for (var i = 0; i < actionTuples.length; i++) {
478   - takeAction.apply(self, actionTuples[i]);
479   - }
480   - return stop;
481   - }
482   -
483   - // the list of Positionals left to be parsed; this is modified
484   - // by consume_positionals()
485   - var positionals = self._getPositionalActions();
486   -
487   - function consumePositionals(startIndex) {
488   - // match as many Positionals as possible
489   - var selectedPattern = argStringsPattern.substr(startIndex);
490   - var argCounts = self._matchArgumentsPartial(positionals, selectedPattern);
491   -
492   - // slice off the appropriate arg strings for each Positional
493   - // and add the Positional and its args to the list
494   - _.zip(positionals, argCounts).forEach(function (item) {
495   - var action = item[0];
496   - var argCount = item[1];
497   - if (argCount === undefined) {
498   - return;
499   - }
500   - var args = argStrings.slice(startIndex, startIndex + argCount);
501   -
502   - startIndex += argCount;
503   - takeAction(action, args);
504   - });
505   -
506   - // slice off the Positionals that we just parsed and return the
507   - // index at which the Positionals' string args stopped
508   - positionals = positionals.slice(argCounts.length);
509   - return startIndex;
510   - }
511   -
512   - // consume Positionals and Optionals alternately, until we have
513   - // passed the last option string
514   - var startIndex = 0;
515   - var position;
516   -
517   - var maxOptionStringIndex = -1;
518   -
519   - Object.keys(optionStringIndices).forEach(function (position) {
520   - maxOptionStringIndex = Math.max(maxOptionStringIndex, parseInt(position, 10));
521   - });
522   -
523   - var positionalsEndIndex, nextOptionStringIndex;
524   -
525   - while (startIndex <= maxOptionStringIndex) {
526   - // consume any Positionals preceding the next option
527   - nextOptionStringIndex = null;
528   - for (position in optionStringIndices) {
529   - if (!optionStringIndices.hasOwnProperty(position)) { continue; }
530   -
531   - position = parseInt(position, 10);
532   - if (position >= startIndex) {
533   - if (nextOptionStringIndex !== null) {
534   - nextOptionStringIndex = Math.min(nextOptionStringIndex, position);
535   - }
536   - else {
537   - nextOptionStringIndex = position;
538   - }
539   - }
540   - }
541   -
542   - if (startIndex !== nextOptionStringIndex) {
543   - positionalsEndIndex = consumePositionals(startIndex);
544   - // only try to parse the next optional if we didn't consume
545   - // the option string during the positionals parsing
546   - if (positionalsEndIndex > startIndex) {
547   - startIndex = positionalsEndIndex;
548   - continue;
549   - }
550   - else {
551   - startIndex = positionalsEndIndex;
552   - }
553   - }
554   -
555   - // if we consumed all the positionals we could and we're not
556   - // at the index of an option string, there were extra arguments
557   - if (!optionStringIndices[startIndex]) {
558   - var strings = argStrings.slice(startIndex, nextOptionStringIndex);
559   - extras = extras.concat(strings);
560   - startIndex = nextOptionStringIndex;
561   - }
562   - // consume the next optional and any arguments for it
563   - startIndex = consumeOptional(startIndex);
564   - }
565   -
566   - // consume any positionals following the last Optional
567   - var stopIndex = consumePositionals(startIndex);
568   -
569   - // if we didn't consume all the argument strings, there were extras
570   - extras = extras.concat(_.rest(argStrings, stopIndex));
571   -
572   - // if we didn't use all the Positional objects, there were too few
573   - // arg strings supplied.
574   - if (positionals.length > 0) {
575   - self.error('too few arguments');
576   - }
577   -
578   - // make sure all required actions were present
579   - self._actions.forEach(function (action) {
580   - if (action.required) {
581   - if (_.indexOf(seenActions, action) < 0) {
582   - self.error(format('Argument "%s" is required', action.getName()));
583   - }
584   - }
585   - });
586   -
587   - // make sure all required groups have one option present
588   - var actionUsed = false;
589   - self._mutuallyExclusiveGroups.forEach(function (group) {
590   - if (group.required) {
591   - actionUsed = _.any(group._groupActions, function (action) {
592   - return _.contains(seenNonDefaultActions, action);
593   - });
594   -
595   - // if no actions were used, report the error
596   - if (!actionUsed) {
597   - var names = [];
598   - group._groupActions.forEach(function (action) {
599   - if (action.help !== $$.SUPPRESS) {
600   - names.push(action.getName());
601   - }
602   - });
603   - names = names.join(' ');
604   - var msg = 'one of the arguments ' + names + ' is required';
605   - self.error(msg);
606   - }
607   - }
608   - });
609   -
610   - // return the updated namespace and the extra arguments
611   - return [namespace, extras];
612   -};
613   -
614   -ArgumentParser.prototype._readArgsFromFiles = function (argStrings) {
615   - // expand arguments referencing files
616   - var _this = this;
617   - var fs = require('fs');
618   - var newArgStrings = [];
619   - argStrings.forEach(function (argString) {
620   - if (_this.fromfilePrefixChars.indexOf(argString[0]) < 0) {
621   - // for regular arguments, just add them back into the list
622   - newArgStrings.push(argString);
623   - } else {
624   - // replace arguments referencing files with the file content
625   - try {
626   - var argstrs = [];
627   - var filename = argString.slice(1);
628   - var content = fs.readFileSync(filename, 'utf8');
629   - content = content.trim().split('\n');
630   - content.forEach(function (argLine) {
631   - _this.convertArgLineToArgs(argLine).forEach(function (arg) {
632   - argstrs.push(arg);
633   - });
634   - argstrs = _this._readArgsFromFiles(argstrs);
635   - });
636   - newArgStrings.push.apply(newArgStrings, argstrs);
637   - } catch (error) {
638   - return _this.error(error.message);
639   - }
640   - }
641   - });
642   - return newArgStrings;
643   -};
644   -
645   -ArgumentParser.prototype.convertArgLineToArgs = function (argLine) {
646   - return [argLine];
647   -};
648   -
649   -ArgumentParser.prototype._matchArgument = function (action, regexpArgStrings) {
650   -
651   - // match the pattern for this action to the arg strings
652   - var regexpNargs = new RegExp('^' + this._getNargsPattern(action));
653   - var matches = regexpArgStrings.match(regexpNargs);
654   - var message;
655   -
656   - // throw an exception if we weren't able to find a match
657   - if (!matches) {
658   - switch (action.nargs) {
659   - case undefined:
660   - case null:
661   - message = 'Expected one argument.';
662   - break;
663   - case $$.OPTIONAL:
664   - message = 'Expected at most one argument.';
665   - break;
666   - case $$.ONE_OR_MORE:
667   - message = 'Expected at least one argument.';
668   - break;
669   - default:
670   - message = 'Expected %s argument(s)';
671   - }
672   -
673   - throw argumentErrorHelper(
674   - action,
675   - format(message, action.nargs)
676   - );
677   - }
678   - // return the number of arguments matched
679   - return matches[1].length;
680   -};
681   -
682   -ArgumentParser.prototype._matchArgumentsPartial = function (actions, regexpArgStrings) {
683   - // progressively shorten the actions list by slicing off the
684   - // final actions until we find a match
685   - var self = this;
686   - var result = [];
687   - var actionSlice, pattern, matches;
688   - var i, j;
689   -
690   - var getLength = function (string) {
691   - return string.length;
692   - };
693   -
694   - for (i = actions.length; i > 0; i--) {
695   - pattern = '';
696   - actionSlice = actions.slice(0, i);
697   - for (j = 0; j < actionSlice.length; j++) {
698   - pattern += self._getNargsPattern(actionSlice[j]);
699   - }
700   -
701   - pattern = new RegExp('^' + pattern);
702   - matches = regexpArgStrings.match(pattern);
703   -
704   - if (matches && matches.length > 0) {
705   - // need only groups
706   - matches = matches.splice(1);
707   - result = result.concat(matches.map(getLength));
708   - break;
709   - }
710   - }
711   -
712   - // return the list of arg string counts
713   - return result;
714   -};
715   -
716   -ArgumentParser.prototype._parseOptional = function (argString) {
717   - var action, optionString, argExplicit, optionTuples;
718   -
719   - // if it's an empty string, it was meant to be a positional
720   - if (!argString) {
721   - return null;
722   - }
723   -
724   - // if it doesn't start with a prefix, it was meant to be positional
725   - if (this.prefixChars.indexOf(argString[0]) < 0) {
726   - return null;
727   - }
728   -
729   - // if the option string is present in the parser, return the action
730   - if (!!this._optionStringActions[argString]) {
731   - return [this._optionStringActions[argString], argString, null];
732   - }
733   -
734   - // if it's just a single character, it was meant to be positional
735   - if (argString.length === 1) {
736   - return null;
737   - }
738   -
739   - // if the option string before the "=" is present, return the action
740   - if (argString.indexOf('=') >= 0) {
741   - var argStringSplit = argString.split('=');
742   - optionString = argStringSplit[0];
743   - argExplicit = argStringSplit[1];
744   -
745   - if (!!this._optionStringActions[optionString]) {
746   - action = this._optionStringActions[optionString];
747   - return [action, optionString, argExplicit];
748   - }
749   - }
750   -
751   - // search through all possible prefixes of the option string
752   - // and all actions in the parser for possible interpretations
753   - optionTuples = this._getOptionTuples(argString);
754   -
755   - // if multiple actions match, the option string was ambiguous
756   - if (optionTuples.length > 1) {
757   - var optionStrings = optionTuples.map(function (optionTuple) {
758   - return optionTuple[1];
759   - });
760   - this.error(format(
761   - 'Ambiguous option: "%s" could match %s.',
762   - argString, optionStrings.join(', ')
763   - ));
764   - // if exactly one action matched, this segmentation is good,
765   - // so return the parsed action
766   - } else if (optionTuples.length === 1) {
767   - return optionTuples[0];
768   - }
769   -
770   - // if it was not found as an option, but it looks like a negative
771   - // number, it was meant to be positional
772   - // unless there are negative-number-like options
773   - if (argString.match(this._regexpNegativeNumber)) {
774   - if (!_.any(this._hasNegativeNumberOptionals)) {
775   - return null;
776   - }
777   - }
778   - // if it contains a space, it was meant to be a positional
779   - if (argString.search(' ') >= 0) {
780   - return null;
781   - }
782   -
783   - // it was meant to be an optional but there is no such option
784   - // in this parser (though it might be a valid option in a subparser)
785   - return [null, argString, null];
786   -};
787   -
788   -ArgumentParser.prototype._getOptionTuples = function (optionString) {
789   - var result = [];
790   - var chars = this.prefixChars;
791   - var optionPrefix;
792   - var argExplicit;
793   - var action;
794   - var actionOptionString;
795   -
796   - // option strings starting with two prefix characters are only split at
797   - // the '='
798   - if (chars.indexOf(optionString[0]) >= 0 && chars.indexOf(optionString[1]) >= 0) {
799   - if (optionString.indexOf('=') >= 0) {
800   - var optionStringSplit = optionString.split('=', 1);
801   -
802   - optionPrefix = optionStringSplit[0];
803   - argExplicit = optionStringSplit[1];
804   - } else {
805   - optionPrefix = optionString;
806   - argExplicit = null;
807   - }
808   -
809   - for (actionOptionString in this._optionStringActions) {
810   - if (actionOptionString.substr(0, optionPrefix.length) === optionPrefix) {
811   - action = this._optionStringActions[actionOptionString];
812   - result.push([action, actionOptionString, argExplicit]);
813   - }
814   - }
815   -
816   - // single character options can be concatenated with their arguments
817   - // but multiple character options always have to have their argument
818   - // separate
819   - } else if (chars.indexOf(optionString[0]) >= 0 && chars.indexOf(optionString[1]) < 0) {
820   - optionPrefix = optionString;
821   - argExplicit = null;
822   - var optionPrefixShort = optionString.substr(0, 2);
823   - var argExplicitShort = optionString.substr(2);
824   -
825   - for (actionOptionString in this._optionStringActions) {
826   - action = this._optionStringActions[actionOptionString];
827   - if (actionOptionString === optionPrefixShort) {
828   - result.push([action, actionOptionString, argExplicitShort]);
829   - } else if (actionOptionString.substr(0, optionPrefix.length) === optionPrefix) {
830   - result.push([action, actionOptionString, argExplicit]);
831   - }
832   - }
833   -
834   - // shouldn't ever get here
835   - } else {
836   - throw new Error(format('Unexpected option string: %s.', optionString));
837   - }
838   - // return the collected option tuples
839   - return result;
840   -};
841   -
842   -ArgumentParser.prototype._getNargsPattern = function (action) {
843   - // in all examples below, we have to allow for '--' args
844   - // which are represented as '-' in the pattern
845   - var regexpNargs;
846   -
847   - switch (action.nargs) {
848   - // the default (null) is assumed to be a single argument
849   - case undefined:
850   - case null:
851   - regexpNargs = '(-*A-*)';
852   - break;
853   - // allow zero or more arguments
854   - case $$.OPTIONAL:
855   - regexpNargs = '(-*A?-*)';
856   - break;
857   - // allow zero or more arguments
858   - case $$.ZERO_OR_MORE:
859   - regexpNargs = '(-*[A-]*)';
860   - break;
861   - // allow one or more arguments
862   - case $$.ONE_OR_MORE:
863   - regexpNargs = '(-*A[A-]*)';
864   - break;
865   - // allow any number of options or arguments
866   - case $$.REMAINDER:
867   - regexpNargs = '([-AO]*)';
868   - break;
869   - // allow one argument followed by any number of options or arguments
870   - case $$.PARSER:
871   - regexpNargs = '(-*A[-AO]*)';
872   - break;
873   - // all others should be integers
874   - default:
875   - regexpNargs = '(-*' + _.str.repeat('-*A', action.nargs) + '-*)';
876   - }
877   -
878   - // if this is an optional action, -- is not allowed
879   - if (action.isOptional()) {
880   - regexpNargs = regexpNargs.replace(/-\*/g, '');
881   - regexpNargs = regexpNargs.replace(/-/g, '');
882   - }
883   -
884   - // return the pattern
885   - return regexpNargs;
886   -};
887   -
888   -//
889   -// Value conversion methods
890   -//
891   -
892   -ArgumentParser.prototype._getValues = function (action, argStrings) {
893   - var self = this;
894   -
895   - // for everything but PARSER args, strip out '--'
896   - if (action.nargs !== $$.PARSER && action.nargs !== $$.REMAINDER) {
897   - argStrings = argStrings.filter(function (arrayElement) {
898   - return arrayElement !== '--';
899   - });
900   - }
901   -
902   - var value, argString;
903   -
904   - // optional argument produces a default when not present
905   - if (argStrings.length === 0 && action.nargs === $$.OPTIONAL) {
906   -
907   - value = (action.isOptional()) ? action.constant: action.defaultValue;
908   -
909   - if (typeof(value) === 'string') {
910   - value = this._getValue(action, value);
911   - this._checkValue(action, value);
912   - }
913   -
914   - // when nargs='*' on a positional, if there were no command-line
915   - // args, use the default if it is anything other than None
916   - } else if (argStrings.length === 0 && action.nargs === $$.ZERO_OR_MORE &&
917   - action.optionStrings.length === 0) {
918   -
919   - value = (action.defaultValue || argStrings);
920   - this._checkValue(action, value);
921   -
922   - // single argument or optional argument produces a single value
923   - } else if (argStrings.length === 1 &&
924   - (!action.nargs || action.nargs === $$.OPTIONAL)) {
925   -
926   - argString = argStrings[0];
927   - value = this._getValue(action, argString);
928   - this._checkValue(action, value);
929   -
930   - // REMAINDER arguments convert all values, checking none
931   - } else if (action.nargs === $$.REMAINDER) {
932   - value = argStrings.map(function (v) {
933   - return self._getValue(action, v);
934   - });
935   -
936   - // PARSER arguments convert all values, but check only the first
937   - } else if (action.nargs === $$.PARSER) {
938   - value = argStrings.map(function (v) {
939   - return self._getValue(action, v);
940   - });
941   - this._checkValue(action, value[0]);
942   -
943   - // all other types of nargs produce a list
944   - } else {
945   - value = argStrings.map(function (v) {
946   - return self._getValue(action, v);
947   - });
948   - value.forEach(function (v) {
949   - self._checkValue(action, v);
950   - });
951   - }
952   -
953   - // return the converted value
954   - return value;
955   -};
956   -
957   -ArgumentParser.prototype._getValue = function (action, argString) {
958   - var result;
959   -
960   - var typeFunction = this._registryGet('type', action.type, action.type);
961   - if (!_.isFunction(typeFunction)) {
962   - var message = format('%s is not callable', typeFunction);
963   - throw argumentErrorHelper(action, message);
964   - }
965   -
966   - // convert the value to the appropriate type
967   - try {
968   - result = typeFunction(argString);
969   -
970   - // ArgumentTypeErrors indicate errors
971   - // If action.type is not a registered string, it is a function
972   - // Try to deduce its name for inclusion in the error message
973   - // Failing that, include the error message it raised.
974   - } catch (e) {
975   - var name = null;
976   - if (_.isString(action.type)) {
977   - name = action.type;
978   - } else {
979   - name = action.type.name || action.type.displayName || '<function>';
980   - }
981   - var msg = format('Invalid %s value: %s', name, argString);
982   - if (name === '<function>') {msg += '\n' + e.message; }
983   - throw argumentErrorHelper(action, msg);
984   - }
985   - // return the converted value
986   - return result;
987   -};
988   -
989   -ArgumentParser.prototype._checkValue = function (action, value) {
990   - // converted value must be one of the choices (if specified)
991   - var choices = action.choices;
992   - if (!!choices) {
993   - // choise for argument can by array or string
994   - if ((_.isString(choices) || _.isArray(choices)) &&
995   - choices.indexOf(value) !== -1) {
996   - return;
997   - }
998   - // choise for subparsers can by only hash
999   - if (_.isObject(choices) && !_.isArray(choices) && choices[value]) {
1000   - return;
1001   - }
1002   -
1003   - if (_.isString(choices)) {
1004   - choices = choices.split('').join(', ');
1005   - }
1006   - else if (_.isArray(choices)) {
1007   - choices = choices.join(', ');
1008   - }
1009   - else {
1010   - choices = _.keys(choices).join(', ');
1011   - }
1012   - var message = format('Invalid choice: %s (choose from [%s])', value, choices);
1013   - throw argumentErrorHelper(action, message);
1014   - }
1015   -};
1016   -
1017   -//
1018   -// Help formatting methods
1019   -//
1020   -
1021   -/**
1022   - * ArgumentParser#formatUsage -> string
1023   - *
1024   - * Return usage string
1025   - *
1026   - * See also [original guide][1]
1027   - *
1028   - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help
1029   - **/
1030   -ArgumentParser.prototype.formatUsage = function () {
1031   - var formatter = this._getFormatter();
1032   - formatter.addUsage(this.usage, this._actions, this._mutuallyExclusiveGroups);
1033   - return formatter.formatHelp();
1034   -};
1035   -
1036   -/**
1037   - * ArgumentParser#formatHelp -> string
1038   - *
1039   - * Return help
1040   - *
1041   - * See also [original guide][1]
1042   - *
1043   - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help
1044   - **/
1045   -ArgumentParser.prototype.formatHelp = function () {
1046   - var formatter = this._getFormatter();
1047   -
1048   - // usage
1049   - formatter.addUsage(this.usage, this._actions, this._mutuallyExclusiveGroups);
1050   -
1051   - // description
1052   - formatter.addText(this.description);
1053   -
1054   - // positionals, optionals and user-defined groups
1055   - this._actionGroups.forEach(function (actionGroup) {
1056   - formatter.startSection(actionGroup.title);
1057   - formatter.addText(actionGroup.description);
1058   - formatter.addArguments(actionGroup._groupActions);
1059   - formatter.endSection();
1060   - });
1061   -
1062   - // epilog
1063   - formatter.addText(this.epilog);
1064   -
1065   - // determine help from format above
1066   - return formatter.formatHelp();
1067   -};
1068   -
1069   -ArgumentParser.prototype._getFormatter = function () {
1070   - var FormatterClass = this.formatterClass;
1071   - var formatter = new FormatterClass({prog: this.prog});
1072   - return formatter;
1073   -};
1074   -
1075   -//
1076   -// Print functions
1077   -//
1078   -
1079   -/**
1080   - * ArgumentParser#printUsage() -> Void
1081   - *
1082   - * Print usage
1083   - *
1084   - * See also [original guide][1]
1085   - *
1086   - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help
1087   - **/
1088   -ArgumentParser.prototype.printUsage = function () {
1089   - this._printMessage(this.formatUsage());
1090   -};
1091   -
1092   -/**
1093   - * ArgumentParser#printHelp() -> Void
1094   - *
1095   - * Print help
1096   - *
1097   - * See also [original guide][1]
1098   - *
1099   - * [1]:http://docs.python.org/dev/library/argparse.html#printing-help
1100   - **/
1101   -ArgumentParser.prototype.printHelp = function () {
1102   - this._printMessage(this.formatHelp());
1103   -};
1104   -
1105   -ArgumentParser.prototype._printMessage = function (message, stream) {
1106   - if (!stream) {
1107   - stream = process.stdout;
1108   - }
1109   - if (message) {
1110   - stream.write('' + message);
1111   - }
1112   -};
1113   -
1114   -//
1115   -// Exit functions
1116   -//
1117   -
1118   -/**
1119   - * ArgumentParser#exit(status=0, message) -> Void
1120   - * - status (int): exit status
1121   - * - message (string): message
1122   - *
1123   - * Print message in stderr/stdout and exit program
1124   - **/
1125   -ArgumentParser.prototype.exit = function (status, message) {
1126   - if (!!message) {
1127   - if (status === 0) {
1128   - this._printMessage(message);
1129   - }
1130   - else {
1131   - this._printMessage(message, process.stderr);
1132   - }
1133   - }
1134   -
1135   - process.exit(status);
1136   -};
1137   -
1138   -/**
1139   - * ArgumentParser#error(message) -> Void
1140   - * - err (Error|string): message
1141   - *
1142   - * Error method Prints a usage message incorporating the message to stderr and
1143   - * exits. If you override this in a subclass,
1144   - * it should not return -- it should
1145   - * either exit or throw an exception.
1146   - *
1147   - **/
1148   -ArgumentParser.prototype.error = function (err) {
1149   - var message;
1150   - if (err instanceof Error) {
1151   - if (this.debug === true) {
1152   - throw err;
1153   - }
1154   - message = err.message;
1155   - }
1156   - else {
1157   - message = err;
1158   - }
1159   - var msg = format('%s: error: %s', this.prog, message) + $$.EOL;
1160   -
1161   - if (this.debug === true) {
1162   - throw new Error(msg);
1163   - }
1164   -
1165   - this.printUsage(process.stderr);
1166   -
1167   - return this.exit(2, msg);
1168   -};
images/node_modules/argparse/lib/const.js deleted 100644 → 0
1   -//
2   -// Constants
3   -//
4   -module.exports.EOL = '\n';
5   -
6   -module.exports.SUPPRESS = '==SUPPRESS==';
7   -
8   -module.exports.OPTIONAL = '?';
9   -
10   -module.exports.ZERO_OR_MORE = '*';
11   -
12   -module.exports.ONE_OR_MORE = '+';
13   -
14   -module.exports.PARSER = 'A...';
15   -
16   -module.exports.REMAINDER = '...';
17   -
18   -module.exports._UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args';
images/node_modules/argparse/lib/help/added_formatters.js deleted 100644 → 0
1   -'use strict';
2   -
3   -var util = require('util');
4   -var _ = require('underscore');
5   -_.str = require('underscore.string');
6   -
7   -// Constants
8   -var $$ = require('../const');
9   -
10   -var HelpFormatter = require('./formatter.js');
11   -
12   -/**
13   - * new RawDescriptionHelpFormatter(options)
14   - * new ArgumentParser({formatterClass: argparse.RawDescriptionHelpFormatter, ...})
15   - *
16   - * Help message formatter which adds default values to argument help.
17   - *
18   - * Only the name of this class is considered a public API. All the methods
19   - * provided by the class are considered an implementation detail.
20   - **/
21   -
22   -var ArgumentDefaultsHelpFormatter = function ArgumentDefaultsHelpFormatter(options) {
23   - HelpFormatter.call(this, options);
24   -};
25   -
26   -util.inherits(ArgumentDefaultsHelpFormatter, HelpFormatter);
27   -
28   -ArgumentDefaultsHelpFormatter.prototype._getHelpString = function (action) {
29   - var help = action.help;
30   - if (action.help.indexOf('%(defaultValue)s') === -1) {
31   - if (action.defaultValue !== $$.SUPPRESS) {
32   - var defaulting_nargs = [$$.OPTIONAL, $$.ZERO_OR_MORE];
33   - if (action.isOptional() || (defaulting_nargs.indexOf(action.nargs) >= 0)) {
34   - help += ' (default: %(defaultValue)s)';
35   - }
36   - }
37   - }
38   - return help;
39   -};
40   -
41   -module.exports.ArgumentDefaultsHelpFormatter = ArgumentDefaultsHelpFormatter;
42   -
43   -/**
44   - * new RawDescriptionHelpFormatter(options)
45   - * new ArgumentParser({formatterClass: argparse.RawDescriptionHelpFormatter, ...})
46   - *
47   - * Help message formatter which retains any formatting in descriptions.
48   - *
49   - * Only the name of this class is considered a public API. All the methods
50   - * provided by the class are considered an implementation detail.
51   - **/
52   -
53   -var RawDescriptionHelpFormatter = function RawDescriptionHelpFormatter(options) {
54   - HelpFormatter.call(this, options);
55   -};
56   -
57   -util.inherits(RawDescriptionHelpFormatter, HelpFormatter);
58   -
59   -RawDescriptionHelpFormatter.prototype._fillText = function (text, width, indent) {
60   - var lines = text.split('\n');
61   - lines = lines.map(function (line) {
62   - return _.str.rtrim(indent + line);
63   - });
64   - return lines.join('\n');
65   -};
66   -module.exports.RawDescriptionHelpFormatter = RawDescriptionHelpFormatter;
67   -
68   -/**
69   - * new RawTextHelpFormatter(options)
70   - * new ArgumentParser({formatterClass: argparse.RawTextHelpFormatter, ...})
71   - *
72   - * Help message formatter which retains formatting of all help text.
73   - *
74   - * Only the name of this class is considered a public API. All the methods
75   - * provided by the class are considered an implementation detail.
76   - **/
77   -
78   -var RawTextHelpFormatter = function RawTextHelpFormatter(options) {
79   - RawDescriptionHelpFormatter.call(this, options);
80   -};
81   -
82   -util.inherits(RawTextHelpFormatter, RawDescriptionHelpFormatter);
83   -
84   -RawTextHelpFormatter.prototype._splitLines = function (text) {
85   - return text.split('\n');
86   -};
87   -
88   -module.exports.RawTextHelpFormatter = RawTextHelpFormatter;