mirror of
				https://github.com/shivammathur/setup-php.git
				synced 2025-10-31 15:26:23 +07:00 
			
		
		
		
	init
This commit is contained in:
		
							
								
								
									
										4
									
								
								node_modules/optimist/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								node_modules/optimist/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| language: node_js | ||||
| node_js: | ||||
|   - "0.8" | ||||
|   - "0.10" | ||||
							
								
								
									
										21
									
								
								node_modules/optimist/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								node_modules/optimist/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| Copyright 2010 James Halliday (mail@substack.net) | ||||
|  | ||||
| This project is free software released under the MIT/X11 license: | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in | ||||
| all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
							
								
								
									
										10
									
								
								node_modules/optimist/example/bool.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								node_modules/optimist/example/bool.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| #!/usr/bin/env node | ||||
| var util = require('util'); | ||||
| var argv = require('optimist').argv; | ||||
|  | ||||
| if (argv.s) { | ||||
|     util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); | ||||
| } | ||||
| console.log( | ||||
|     (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') | ||||
| ); | ||||
							
								
								
									
										7
									
								
								node_modules/optimist/example/boolean_double.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								node_modules/optimist/example/boolean_double.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .boolean(['x','y','z']) | ||||
|     .argv | ||||
| ; | ||||
| console.dir([ argv.x, argv.y, argv.z ]); | ||||
| console.dir(argv._); | ||||
							
								
								
									
										7
									
								
								node_modules/optimist/example/boolean_single.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								node_modules/optimist/example/boolean_single.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .boolean('v') | ||||
|     .argv | ||||
| ; | ||||
| console.dir(argv.v); | ||||
| console.dir(argv._); | ||||
							
								
								
									
										8
									
								
								node_modules/optimist/example/default_hash.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								node_modules/optimist/example/default_hash.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| #!/usr/bin/env node | ||||
|  | ||||
| var argv = require('optimist') | ||||
|     .default({ x : 10, y : 10 }) | ||||
|     .argv | ||||
| ; | ||||
|  | ||||
| console.log(argv.x + argv.y); | ||||
							
								
								
									
										7
									
								
								node_modules/optimist/example/default_singles.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								node_modules/optimist/example/default_singles.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .default('x', 10) | ||||
|     .default('y', 10) | ||||
|     .argv | ||||
| ; | ||||
| console.log(argv.x + argv.y); | ||||
							
								
								
									
										8
									
								
								node_modules/optimist/example/divide.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								node_modules/optimist/example/divide.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| #!/usr/bin/env node | ||||
|  | ||||
| var argv = require('optimist') | ||||
|     .usage('Usage: $0 -x [num] -y [num]') | ||||
|     .demand(['x','y']) | ||||
|     .argv; | ||||
|  | ||||
| console.log(argv.x / argv.y); | ||||
							
								
								
									
										20
									
								
								node_modules/optimist/example/line_count.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								node_modules/optimist/example/line_count.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Count the lines in a file.\nUsage: $0') | ||||
|     .demand('f') | ||||
|     .alias('f', 'file') | ||||
|     .describe('f', 'Load a file') | ||||
|     .argv | ||||
| ; | ||||
|  | ||||
| var fs = require('fs'); | ||||
| var s = fs.createReadStream(argv.file); | ||||
|  | ||||
| var lines = 0; | ||||
| s.on('data', function (buf) { | ||||
|     lines += buf.toString().match(/\n/g).length; | ||||
| }); | ||||
|  | ||||
| s.on('end', function () { | ||||
|     console.log(lines); | ||||
| }); | ||||
							
								
								
									
										29
									
								
								node_modules/optimist/example/line_count_options.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/optimist/example/line_count_options.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Count the lines in a file.\nUsage: $0') | ||||
|     .options({ | ||||
|         file : { | ||||
|             demand : true, | ||||
|             alias : 'f', | ||||
|             description : 'Load a file' | ||||
|         }, | ||||
|         base : { | ||||
|             alias : 'b', | ||||
|             description : 'Numeric base to use for output', | ||||
|             default : 10, | ||||
|         }, | ||||
|     }) | ||||
|     .argv | ||||
| ; | ||||
|  | ||||
| var fs = require('fs'); | ||||
| var s = fs.createReadStream(argv.file); | ||||
|  | ||||
| var lines = 0; | ||||
| s.on('data', function (buf) { | ||||
|     lines += buf.toString().match(/\n/g).length; | ||||
| }); | ||||
|  | ||||
| s.on('end', function () { | ||||
|     console.log(lines.toString(argv.base)); | ||||
| }); | ||||
							
								
								
									
										29
									
								
								node_modules/optimist/example/line_count_wrap.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								node_modules/optimist/example/line_count_wrap.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Count the lines in a file.\nUsage: $0') | ||||
|     .wrap(80) | ||||
|     .demand('f') | ||||
|     .alias('f', [ 'file', 'filename' ]) | ||||
|     .describe('f', | ||||
|         "Load a file. It's pretty important." | ||||
|         + " Required even. So you'd better specify it." | ||||
|     ) | ||||
|     .alias('b', 'base') | ||||
|     .describe('b', 'Numeric base to display the number of lines in') | ||||
|     .default('b', 10) | ||||
|     .describe('x', 'Super-secret optional parameter which is secret') | ||||
|     .default('x', '') | ||||
|     .argv | ||||
| ; | ||||
|  | ||||
| var fs = require('fs'); | ||||
| var s = fs.createReadStream(argv.file); | ||||
|  | ||||
| var lines = 0; | ||||
| s.on('data', function (buf) { | ||||
|     lines += buf.toString().match(/\n/g).length; | ||||
| }); | ||||
|  | ||||
| s.on('end', function () { | ||||
|     console.log(lines.toString(argv.base)); | ||||
| }); | ||||
							
								
								
									
										4
									
								
								node_modules/optimist/example/nonopt.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								node_modules/optimist/example/nonopt.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
| console.log('(%d,%d)', argv.x, argv.y); | ||||
| console.log(argv._); | ||||
							
								
								
									
										2
									
								
								node_modules/optimist/example/reflect.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								node_modules/optimist/example/reflect.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| #!/usr/bin/env node | ||||
| console.dir(require('optimist').argv); | ||||
							
								
								
									
										3
									
								
								node_modules/optimist/example/short.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								node_modules/optimist/example/short.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
| console.log('(%d,%d)', argv.x, argv.y); | ||||
							
								
								
									
										11
									
								
								node_modules/optimist/example/string.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								node_modules/optimist/example/string.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .string('x', 'y') | ||||
|     .argv | ||||
| ; | ||||
| console.dir([ argv.x, argv.y ]); | ||||
|  | ||||
| /* Turns off numeric coercion: | ||||
|     ./node string.js -x 000123 -y 9876 | ||||
|     [ '000123', '9876' ] | ||||
| */ | ||||
							
								
								
									
										19
									
								
								node_modules/optimist/example/usage-options.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								node_modules/optimist/example/usage-options.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| var optimist = require('./../index'); | ||||
|  | ||||
| var argv = optimist.usage('This is my awesome program', { | ||||
|   'about': { | ||||
|     description: 'Provide some details about the author of this program', | ||||
|     required: true, | ||||
|     short: 'a', | ||||
|   }, | ||||
|   'info': { | ||||
|     description: 'Provide some information about the node.js agains!!!!!!', | ||||
|     boolean: true, | ||||
|     short: 'i' | ||||
|   } | ||||
| }).argv; | ||||
|  | ||||
| optimist.showHelp(); | ||||
|  | ||||
| console.log('\n\nInspecting options'); | ||||
| console.dir(argv); | ||||
							
								
								
									
										10
									
								
								node_modules/optimist/example/xup.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								node_modules/optimist/example/xup.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
|  | ||||
| if (argv.rif - 5 * argv.xup > 7.138) { | ||||
|     console.log('Buy more riffiwobbles'); | ||||
| } | ||||
| else { | ||||
|     console.log('Sell the xupptumblers'); | ||||
| } | ||||
|  | ||||
							
								
								
									
										343
									
								
								node_modules/optimist/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										343
									
								
								node_modules/optimist/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,343 @@ | ||||
| var path = require('path'); | ||||
| var minimist = require('minimist'); | ||||
| var wordwrap = require('wordwrap'); | ||||
|  | ||||
| /*  Hack an instance of Argv with process.argv into Argv | ||||
|     so people can do | ||||
|         require('optimist')(['--beeble=1','-z','zizzle']).argv | ||||
|     to parse a list of args and | ||||
|         require('optimist').argv | ||||
|     to get a parsed version of process.argv. | ||||
| */ | ||||
|  | ||||
| var inst = Argv(process.argv.slice(2)); | ||||
| Object.keys(inst).forEach(function (key) { | ||||
|     Argv[key] = typeof inst[key] == 'function' | ||||
|         ? inst[key].bind(inst) | ||||
|         : inst[key]; | ||||
| }); | ||||
|  | ||||
| var exports = module.exports = Argv; | ||||
| function Argv (processArgs, cwd) { | ||||
|     var self = {}; | ||||
|     if (!cwd) cwd = process.cwd(); | ||||
|      | ||||
|     self.$0 = process.argv | ||||
|         .slice(0,2) | ||||
|         .map(function (x) { | ||||
|             var b = rebase(cwd, x); | ||||
|             return x.match(/^\//) && b.length < x.length | ||||
|                 ? b : x | ||||
|         }) | ||||
|         .join(' ') | ||||
|     ; | ||||
|      | ||||
|     if (process.env._ != undefined && process.argv[1] == process.env._) { | ||||
|         self.$0 = process.env._.replace( | ||||
|             path.dirname(process.execPath) + '/', '' | ||||
|         ); | ||||
|     } | ||||
|      | ||||
|     var options = { | ||||
|         boolean: [], | ||||
|         string: [], | ||||
|         alias: {}, | ||||
|         default: [] | ||||
|     }; | ||||
|      | ||||
|     self.boolean = function (bools) { | ||||
|         options.boolean.push.apply(options.boolean, [].concat(bools)); | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     self.string = function (strings) { | ||||
|         options.string.push.apply(options.string, [].concat(strings)); | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     self.default = function (key, value) { | ||||
|         if (typeof key === 'object') { | ||||
|             Object.keys(key).forEach(function (k) { | ||||
|                 self.default(k, key[k]); | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             options.default[key] = value; | ||||
|         } | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     self.alias = function (x, y) { | ||||
|         if (typeof x === 'object') { | ||||
|             Object.keys(x).forEach(function (key) { | ||||
|                 self.alias(key, x[key]); | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             options.alias[x] = (options.alias[x] || []).concat(y); | ||||
|         } | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     var demanded = {}; | ||||
|     self.demand = function (keys) { | ||||
|         if (typeof keys == 'number') { | ||||
|             if (!demanded._) demanded._ = 0; | ||||
|             demanded._ += keys; | ||||
|         } | ||||
|         else if (Array.isArray(keys)) { | ||||
|             keys.forEach(function (key) { | ||||
|                 self.demand(key); | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             demanded[keys] = true; | ||||
|         } | ||||
|          | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     var usage; | ||||
|     self.usage = function (msg, opts) { | ||||
|         if (!opts && typeof msg === 'object') { | ||||
|             opts = msg; | ||||
|             msg = null; | ||||
|         } | ||||
|          | ||||
|         usage = msg; | ||||
|          | ||||
|         if (opts) self.options(opts); | ||||
|          | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     function fail (msg) { | ||||
|         self.showHelp(); | ||||
|         if (msg) console.error(msg); | ||||
|         process.exit(1); | ||||
|     } | ||||
|      | ||||
|     var checks = []; | ||||
|     self.check = function (f) { | ||||
|         checks.push(f); | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     var descriptions = {}; | ||||
|     self.describe = function (key, desc) { | ||||
|         if (typeof key === 'object') { | ||||
|             Object.keys(key).forEach(function (k) { | ||||
|                 self.describe(k, key[k]); | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             descriptions[key] = desc; | ||||
|         } | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     self.parse = function (args) { | ||||
|         return parseArgs(args); | ||||
|     }; | ||||
|      | ||||
|     self.option = self.options = function (key, opt) { | ||||
|         if (typeof key === 'object') { | ||||
|             Object.keys(key).forEach(function (k) { | ||||
|                 self.options(k, key[k]); | ||||
|             }); | ||||
|         } | ||||
|         else { | ||||
|             if (opt.alias) self.alias(key, opt.alias); | ||||
|             if (opt.demand) self.demand(key); | ||||
|             if (typeof opt.default !== 'undefined') { | ||||
|                 self.default(key, opt.default); | ||||
|             } | ||||
|              | ||||
|             if (opt.boolean || opt.type === 'boolean') { | ||||
|                 self.boolean(key); | ||||
|             } | ||||
|             if (opt.string || opt.type === 'string') { | ||||
|                 self.string(key); | ||||
|             } | ||||
|              | ||||
|             var desc = opt.describe || opt.description || opt.desc; | ||||
|             if (desc) { | ||||
|                 self.describe(key, desc); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     var wrap = null; | ||||
|     self.wrap = function (cols) { | ||||
|         wrap = cols; | ||||
|         return self; | ||||
|     }; | ||||
|      | ||||
|     self.showHelp = function (fn) { | ||||
|         if (!fn) fn = console.error; | ||||
|         fn(self.help()); | ||||
|     }; | ||||
|      | ||||
|     self.help = function () { | ||||
|         var keys = Object.keys( | ||||
|             Object.keys(descriptions) | ||||
|             .concat(Object.keys(demanded)) | ||||
|             .concat(Object.keys(options.default)) | ||||
|             .reduce(function (acc, key) { | ||||
|                 if (key !== '_') acc[key] = true; | ||||
|                 return acc; | ||||
|             }, {}) | ||||
|         ); | ||||
|          | ||||
|         var help = keys.length ? [ 'Options:' ] : []; | ||||
|          | ||||
|         if (usage) { | ||||
|             help.unshift(usage.replace(/\$0/g, self.$0), ''); | ||||
|         } | ||||
|          | ||||
|         var switches = keys.reduce(function (acc, key) { | ||||
|             acc[key] = [ key ].concat(options.alias[key] || []) | ||||
|                 .map(function (sw) { | ||||
|                     return (sw.length > 1 ? '--' : '-') + sw | ||||
|                 }) | ||||
|                 .join(', ') | ||||
|             ; | ||||
|             return acc; | ||||
|         }, {}); | ||||
|          | ||||
|         var switchlen = longest(Object.keys(switches).map(function (s) { | ||||
|             return switches[s] || ''; | ||||
|         })); | ||||
|          | ||||
|         var desclen = longest(Object.keys(descriptions).map(function (d) {  | ||||
|             return descriptions[d] || ''; | ||||
|         })); | ||||
|          | ||||
|         keys.forEach(function (key) { | ||||
|             var kswitch = switches[key]; | ||||
|             var desc = descriptions[key] || ''; | ||||
|              | ||||
|             if (wrap) { | ||||
|                 desc = wordwrap(switchlen + 4, wrap)(desc) | ||||
|                     .slice(switchlen + 4) | ||||
|                 ; | ||||
|             } | ||||
|              | ||||
|             var spadding = new Array( | ||||
|                 Math.max(switchlen - kswitch.length + 3, 0) | ||||
|             ).join(' '); | ||||
|              | ||||
|             var dpadding = new Array( | ||||
|                 Math.max(desclen - desc.length + 1, 0) | ||||
|             ).join(' '); | ||||
|              | ||||
|             var type = null; | ||||
|              | ||||
|             if (options.boolean[key]) type = '[boolean]'; | ||||
|             if (options.string[key]) type = '[string]'; | ||||
|              | ||||
|             if (!wrap && dpadding.length > 0) { | ||||
|                 desc += dpadding; | ||||
|             } | ||||
|              | ||||
|             var prelude = '  ' + kswitch + spadding; | ||||
|             var extra = [ | ||||
|                 type, | ||||
|                 demanded[key] | ||||
|                     ? '[required]' | ||||
|                     : null | ||||
|                 , | ||||
|                 options.default[key] !== undefined | ||||
|                     ? '[default: ' + JSON.stringify(options.default[key]) + ']' | ||||
|                     : null | ||||
|                 , | ||||
|             ].filter(Boolean).join('  '); | ||||
|              | ||||
|             var body = [ desc, extra ].filter(Boolean).join('  '); | ||||
|              | ||||
|             if (wrap) { | ||||
|                 var dlines = desc.split('\n'); | ||||
|                 var dlen = dlines.slice(-1)[0].length | ||||
|                     + (dlines.length === 1 ? prelude.length : 0) | ||||
|                  | ||||
|                 body = desc + (dlen + extra.length > wrap - 2 | ||||
|                     ? '\n' | ||||
|                         + new Array(wrap - extra.length + 1).join(' ') | ||||
|                         + extra | ||||
|                     : new Array(wrap - extra.length - dlen + 1).join(' ') | ||||
|                         + extra | ||||
|                 ); | ||||
|             } | ||||
|              | ||||
|             help.push(prelude + body); | ||||
|         }); | ||||
|          | ||||
|         help.push(''); | ||||
|         return help.join('\n'); | ||||
|     }; | ||||
|      | ||||
|     Object.defineProperty(self, 'argv', { | ||||
|         get : function () { return parseArgs(processArgs) }, | ||||
|         enumerable : true, | ||||
|     }); | ||||
|      | ||||
|     function parseArgs (args) { | ||||
|         var argv = minimist(args, options); | ||||
|         argv.$0 = self.$0; | ||||
|          | ||||
|         if (demanded._ && argv._.length < demanded._) { | ||||
|             fail('Not enough non-option arguments: got ' | ||||
|                 + argv._.length + ', need at least ' + demanded._ | ||||
|             ); | ||||
|         } | ||||
|          | ||||
|         var missing = []; | ||||
|         Object.keys(demanded).forEach(function (key) { | ||||
|             if (!argv[key]) missing.push(key); | ||||
|         }); | ||||
|          | ||||
|         if (missing.length) { | ||||
|             fail('Missing required arguments: ' + missing.join(', ')); | ||||
|         } | ||||
|          | ||||
|         checks.forEach(function (f) { | ||||
|             try { | ||||
|                 if (f(argv) === false) { | ||||
|                     fail('Argument check failed: ' + f.toString()); | ||||
|                 } | ||||
|             } | ||||
|             catch (err) { | ||||
|                 fail(err) | ||||
|             } | ||||
|         }); | ||||
|          | ||||
|         return argv; | ||||
|     } | ||||
|      | ||||
|     function longest (xs) { | ||||
|         return Math.max.apply( | ||||
|             null, | ||||
|             xs.map(function (x) { return x.length }) | ||||
|         ); | ||||
|     } | ||||
|      | ||||
|     return self; | ||||
| }; | ||||
|  | ||||
| // rebase an absolute path to a relative one with respect to a base directory | ||||
| // exported for tests | ||||
| exports.rebase = rebase; | ||||
| function rebase (base, dir) { | ||||
|     var ds = path.normalize(dir).split('/').slice(1); | ||||
|     var bs = path.normalize(base).split('/').slice(1); | ||||
|      | ||||
|     for (var i = 0; ds[i] && ds[i] == bs[i]; i++); | ||||
|     ds.splice(0, i); bs.splice(0, i); | ||||
|      | ||||
|     var p = path.normalize( | ||||
|         bs.map(function () { return '..' }).concat(ds).join('/') | ||||
|     ).replace(/\/$/,'').replace(/^$/, '.'); | ||||
|     return p.match(/^[.\/]/) ? p : './' + p; | ||||
| }; | ||||
							
								
								
									
										4
									
								
								node_modules/optimist/node_modules/minimist/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								node_modules/optimist/node_modules/minimist/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| language: node_js | ||||
| node_js: | ||||
|   - "0.8" | ||||
|   - "0.10" | ||||
							
								
								
									
										18
									
								
								node_modules/optimist/node_modules/minimist/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								node_modules/optimist/node_modules/minimist/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| This software is released under the MIT license: | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy of | ||||
| this software and associated documentation files (the "Software"), to deal in | ||||
| the Software without restriction, including without limitation the rights to | ||||
| use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | ||||
| the Software, and to permit persons to whom the Software is furnished to do so, | ||||
| subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | ||||
| FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | ||||
| COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||||
| IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||||
| CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
							
								
								
									
										2
									
								
								node_modules/optimist/node_modules/minimist/example/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								node_modules/optimist/node_modules/minimist/example/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| var argv = require('../')(process.argv.slice(2)); | ||||
| console.dir(argv); | ||||
							
								
								
									
										187
									
								
								node_modules/optimist/node_modules/minimist/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								node_modules/optimist/node_modules/minimist/index.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,187 @@ | ||||
| module.exports = function (args, opts) { | ||||
|     if (!opts) opts = {}; | ||||
|      | ||||
|     var flags = { bools : {}, strings : {} }; | ||||
|      | ||||
|     [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { | ||||
|         flags.bools[key] = true; | ||||
|     }); | ||||
|      | ||||
|     var aliases = {}; | ||||
|     Object.keys(opts.alias || {}).forEach(function (key) { | ||||
|         aliases[key] = [].concat(opts.alias[key]); | ||||
|         aliases[key].forEach(function (x) { | ||||
|             aliases[x] = [key].concat(aliases[key].filter(function (y) { | ||||
|                 return x !== y; | ||||
|             })); | ||||
|         }); | ||||
|     }); | ||||
|  | ||||
|     [].concat(opts.string).filter(Boolean).forEach(function (key) { | ||||
|         flags.strings[key] = true; | ||||
|         if (aliases[key]) { | ||||
|             flags.strings[aliases[key]] = true; | ||||
|         } | ||||
|      }); | ||||
|  | ||||
|     var defaults = opts['default'] || {}; | ||||
|      | ||||
|     var argv = { _ : [] }; | ||||
|     Object.keys(flags.bools).forEach(function (key) { | ||||
|         setArg(key, defaults[key] === undefined ? false : defaults[key]); | ||||
|     }); | ||||
|      | ||||
|     var notFlags = []; | ||||
|  | ||||
|     if (args.indexOf('--') !== -1) { | ||||
|         notFlags = args.slice(args.indexOf('--')+1); | ||||
|         args = args.slice(0, args.indexOf('--')); | ||||
|     } | ||||
|  | ||||
|     function setArg (key, val) { | ||||
|         var value = !flags.strings[key] && isNumber(val) | ||||
|             ? Number(val) : val | ||||
|         ; | ||||
|         setKey(argv, key.split('.'), value); | ||||
|          | ||||
|         (aliases[key] || []).forEach(function (x) { | ||||
|             setKey(argv, x.split('.'), value); | ||||
|         }); | ||||
|     } | ||||
|      | ||||
|     for (var i = 0; i < args.length; i++) { | ||||
|         var arg = args[i]; | ||||
|          | ||||
|         if (/^--.+=/.test(arg)) { | ||||
|             // Using [\s\S] instead of . because js doesn't support the | ||||
|             // 'dotall' regex modifier. See: | ||||
|             // http://stackoverflow.com/a/1068308/13216 | ||||
|             var m = arg.match(/^--([^=]+)=([\s\S]*)$/); | ||||
|             setArg(m[1], m[2]); | ||||
|         } | ||||
|         else if (/^--no-.+/.test(arg)) { | ||||
|             var key = arg.match(/^--no-(.+)/)[1]; | ||||
|             setArg(key, false); | ||||
|         } | ||||
|         else if (/^--.+/.test(arg)) { | ||||
|             var key = arg.match(/^--(.+)/)[1]; | ||||
|             var next = args[i + 1]; | ||||
|             if (next !== undefined && !/^-/.test(next) | ||||
|             && !flags.bools[key] | ||||
|             && (aliases[key] ? !flags.bools[aliases[key]] : true)) { | ||||
|                 setArg(key, next); | ||||
|                 i++; | ||||
|             } | ||||
|             else if (/^(true|false)$/.test(next)) { | ||||
|                 setArg(key, next === 'true'); | ||||
|                 i++; | ||||
|             } | ||||
|             else { | ||||
|                 setArg(key, flags.strings[key] ? '' : true); | ||||
|             } | ||||
|         } | ||||
|         else if (/^-[^-]+/.test(arg)) { | ||||
|             var letters = arg.slice(1,-1).split(''); | ||||
|              | ||||
|             var broken = false; | ||||
|             for (var j = 0; j < letters.length; j++) { | ||||
|                 var next = arg.slice(j+2); | ||||
|                  | ||||
|                 if (next === '-') { | ||||
|                     setArg(letters[j], next) | ||||
|                     continue; | ||||
|                 } | ||||
|                  | ||||
|                 if (/[A-Za-z]/.test(letters[j]) | ||||
|                 && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { | ||||
|                     setArg(letters[j], next); | ||||
|                     broken = true; | ||||
|                     break; | ||||
|                 } | ||||
|                  | ||||
|                 if (letters[j+1] && letters[j+1].match(/\W/)) { | ||||
|                     setArg(letters[j], arg.slice(j+2)); | ||||
|                     broken = true; | ||||
|                     break; | ||||
|                 } | ||||
|                 else { | ||||
|                     setArg(letters[j], flags.strings[letters[j]] ? '' : true); | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|             var key = arg.slice(-1)[0]; | ||||
|             if (!broken && key !== '-') { | ||||
|                 if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) | ||||
|                 && !flags.bools[key] | ||||
|                 && (aliases[key] ? !flags.bools[aliases[key]] : true)) { | ||||
|                     setArg(key, args[i+1]); | ||||
|                     i++; | ||||
|                 } | ||||
|                 else if (args[i+1] && /true|false/.test(args[i+1])) { | ||||
|                     setArg(key, args[i+1] === 'true'); | ||||
|                     i++; | ||||
|                 } | ||||
|                 else { | ||||
|                     setArg(key, flags.strings[key] ? '' : true); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         else { | ||||
|             argv._.push( | ||||
|                 flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) | ||||
|             ); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     Object.keys(defaults).forEach(function (key) { | ||||
|         if (!hasKey(argv, key.split('.'))) { | ||||
|             setKey(argv, key.split('.'), defaults[key]); | ||||
|              | ||||
|             (aliases[key] || []).forEach(function (x) { | ||||
|                 setKey(argv, x.split('.'), defaults[key]); | ||||
|             }); | ||||
|         } | ||||
|     }); | ||||
|      | ||||
|     notFlags.forEach(function(key) { | ||||
|         argv._.push(key); | ||||
|     }); | ||||
|  | ||||
|     return argv; | ||||
| }; | ||||
|  | ||||
| function hasKey (obj, keys) { | ||||
|     var o = obj; | ||||
|     keys.slice(0,-1).forEach(function (key) { | ||||
|         o = (o[key] || {}); | ||||
|     }); | ||||
|  | ||||
|     var key = keys[keys.length - 1]; | ||||
|     return key in o; | ||||
| } | ||||
|  | ||||
| function setKey (obj, keys, value) { | ||||
|     var o = obj; | ||||
|     keys.slice(0,-1).forEach(function (key) { | ||||
|         if (o[key] === undefined) o[key] = {}; | ||||
|         o = o[key]; | ||||
|     }); | ||||
|      | ||||
|     var key = keys[keys.length - 1]; | ||||
|     if (o[key] === undefined || typeof o[key] === 'boolean') { | ||||
|         o[key] = value; | ||||
|     } | ||||
|     else if (Array.isArray(o[key])) { | ||||
|         o[key].push(value); | ||||
|     } | ||||
|     else { | ||||
|         o[key] = [ o[key], value ]; | ||||
|     } | ||||
| } | ||||
|  | ||||
| function isNumber (x) { | ||||
|     if (typeof x === 'number') return true; | ||||
|     if (/^0x[0-9a-f]+$/i.test(x)) return true; | ||||
|     return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); | ||||
| } | ||||
|  | ||||
							
								
								
									
										75
									
								
								node_modules/optimist/node_modules/minimist/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								node_modules/optimist/node_modules/minimist/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| { | ||||
|   "_args": [ | ||||
|     [ | ||||
|       "minimist@0.0.10", | ||||
|       "E:\\python\\setup-php" | ||||
|     ] | ||||
|   ], | ||||
|   "_development": true, | ||||
|   "_from": "minimist@0.0.10", | ||||
|   "_id": "minimist@0.0.10", | ||||
|   "_inBundle": false, | ||||
|   "_integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", | ||||
|   "_location": "/optimist/minimist", | ||||
|   "_phantomChildren": {}, | ||||
|   "_requested": { | ||||
|     "type": "version", | ||||
|     "registry": true, | ||||
|     "raw": "minimist@0.0.10", | ||||
|     "name": "minimist", | ||||
|     "escapedName": "minimist", | ||||
|     "rawSpec": "0.0.10", | ||||
|     "saveSpec": null, | ||||
|     "fetchSpec": "0.0.10" | ||||
|   }, | ||||
|   "_requiredBy": [ | ||||
|     "/optimist" | ||||
|   ], | ||||
|   "_resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", | ||||
|   "_spec": "0.0.10", | ||||
|   "_where": "E:\\python\\setup-php", | ||||
|   "author": { | ||||
|     "name": "James Halliday", | ||||
|     "email": "mail@substack.net", | ||||
|     "url": "http://substack.net" | ||||
|   }, | ||||
|   "bugs": { | ||||
|     "url": "https://github.com/substack/minimist/issues" | ||||
|   }, | ||||
|   "description": "parse argument options", | ||||
|   "devDependencies": { | ||||
|     "tap": "~0.4.0", | ||||
|     "tape": "~1.0.4" | ||||
|   }, | ||||
|   "homepage": "https://github.com/substack/minimist", | ||||
|   "keywords": [ | ||||
|     "argv", | ||||
|     "getopt", | ||||
|     "parser", | ||||
|     "optimist" | ||||
|   ], | ||||
|   "license": "MIT", | ||||
|   "main": "index.js", | ||||
|   "name": "minimist", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git://github.com/substack/minimist.git" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "test": "tap test/*.js" | ||||
|   }, | ||||
|   "testling": { | ||||
|     "files": "test/*.js", | ||||
|     "browsers": [ | ||||
|       "ie/6..latest", | ||||
|       "ff/5", | ||||
|       "firefox/latest", | ||||
|       "chrome/10", | ||||
|       "chrome/latest", | ||||
|       "safari/5.1", | ||||
|       "safari/latest", | ||||
|       "opera/12" | ||||
|     ] | ||||
|   }, | ||||
|   "version": "0.0.10" | ||||
| } | ||||
							
								
								
									
										73
									
								
								node_modules/optimist/node_modules/minimist/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								node_modules/optimist/node_modules/minimist/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,73 @@ | ||||
| # minimist | ||||
|  | ||||
| parse argument options | ||||
|  | ||||
| This module is the guts of optimist's argument parser without all the | ||||
| fanciful decoration. | ||||
|  | ||||
| [](http://ci.testling.com/substack/minimist) | ||||
|  | ||||
| [](http://travis-ci.org/substack/minimist) | ||||
|  | ||||
| # example | ||||
|  | ||||
| ``` js | ||||
| var argv = require('minimist')(process.argv.slice(2)); | ||||
| console.dir(argv); | ||||
| ``` | ||||
|  | ||||
| ``` | ||||
| $ node example/parse.js -a beep -b boop | ||||
| { _: [], a: 'beep', b: 'boop' } | ||||
| ``` | ||||
|  | ||||
| ``` | ||||
| $ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz | ||||
| { _: [ 'foo', 'bar', 'baz' ], | ||||
|   x: 3, | ||||
|   y: 4, | ||||
|   n: 5, | ||||
|   a: true, | ||||
|   b: true, | ||||
|   c: true, | ||||
|   beep: 'boop' } | ||||
| ``` | ||||
|  | ||||
| # methods | ||||
|  | ||||
| ``` js | ||||
| var parseArgs = require('minimist') | ||||
| ``` | ||||
|  | ||||
| ## var argv = parseArgs(args, opts={}) | ||||
|  | ||||
| Return an argument object `argv` populated with the array arguments from `args`. | ||||
|  | ||||
| `argv._` contains all the arguments that didn't have an option associated with | ||||
| them. | ||||
|  | ||||
| Numeric-looking arguments will be returned as numbers unless `opts.string` or | ||||
| `opts.boolean` is set for that argument name. | ||||
|  | ||||
| Any arguments after `'--'` will not be parsed and will end up in `argv._`. | ||||
|  | ||||
| options can be: | ||||
|  | ||||
| * `opts.string` - a string or array of strings argument names to always treat as | ||||
| strings | ||||
| * `opts.boolean` - a string or array of strings to always treat as booleans | ||||
| * `opts.alias` - an object mapping string names to strings or arrays of string | ||||
| argument names to use as aliases | ||||
| * `opts.default` - an object mapping string argument names to default values | ||||
|  | ||||
| # install | ||||
|  | ||||
| With [npm](https://npmjs.org) do: | ||||
|  | ||||
| ``` | ||||
| npm install minimist | ||||
| ``` | ||||
|  | ||||
| # license | ||||
|  | ||||
| MIT | ||||
							
								
								
									
										119
									
								
								node_modules/optimist/node_modules/minimist/test/bool.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								node_modules/optimist/node_modules/minimist/test/bool.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,119 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('flag boolean default false', function (t) { | ||||
|     var argv = parse(['moo'], { | ||||
|         boolean: ['t', 'verbose'], | ||||
|         default: { verbose: false, t: false } | ||||
|     }); | ||||
|      | ||||
|     t.deepEqual(argv, { | ||||
|         verbose: false, | ||||
|         t: false, | ||||
|         _: ['moo'] | ||||
|     }); | ||||
|      | ||||
|     t.deepEqual(typeof argv.verbose, 'boolean'); | ||||
|     t.deepEqual(typeof argv.t, 'boolean'); | ||||
|     t.end(); | ||||
|  | ||||
| }); | ||||
|  | ||||
| test('boolean groups', function (t) { | ||||
|     var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], { | ||||
|         boolean: ['x','y','z'] | ||||
|     }); | ||||
|      | ||||
|     t.deepEqual(argv, { | ||||
|         x : true, | ||||
|         y : false, | ||||
|         z : true, | ||||
|         _ : [ 'one', 'two', 'three' ] | ||||
|     }); | ||||
|      | ||||
|     t.deepEqual(typeof argv.x, 'boolean'); | ||||
|     t.deepEqual(typeof argv.y, 'boolean'); | ||||
|     t.deepEqual(typeof argv.z, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
| test('boolean and alias with chainable api', function (t) { | ||||
|     var aliased = [ '-h', 'derp' ]; | ||||
|     var regular = [ '--herp',  'derp' ]; | ||||
|     var opts = { | ||||
|         herp: { alias: 'h', boolean: true } | ||||
|     }; | ||||
|     var aliasedArgv = parse(aliased, { | ||||
|         boolean: 'herp', | ||||
|         alias: { h: 'herp' } | ||||
|     }); | ||||
|     var propertyArgv = parse(regular, { | ||||
|         boolean: 'herp', | ||||
|         alias: { h: 'herp' } | ||||
|     }); | ||||
|     var expected = { | ||||
|         herp: true, | ||||
|         h: true, | ||||
|         '_': [ 'derp' ] | ||||
|     }; | ||||
|      | ||||
|     t.same(aliasedArgv, expected); | ||||
|     t.same(propertyArgv, expected);  | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean and alias with options hash', function (t) { | ||||
|     var aliased = [ '-h', 'derp' ]; | ||||
|     var regular = [ '--herp', 'derp' ]; | ||||
|     var opts = { | ||||
|         alias: { 'h': 'herp' }, | ||||
|         boolean: 'herp' | ||||
|     }; | ||||
|     var aliasedArgv = parse(aliased, opts); | ||||
|     var propertyArgv = parse(regular, opts); | ||||
|     var expected = { | ||||
|         herp: true, | ||||
|         h: true, | ||||
|         '_': [ 'derp' ] | ||||
|     }; | ||||
|     t.same(aliasedArgv, expected); | ||||
|     t.same(propertyArgv, expected); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean and alias using explicit true', function (t) { | ||||
|     var aliased = [ '-h', 'true' ]; | ||||
|     var regular = [ '--herp',  'true' ]; | ||||
|     var opts = { | ||||
|         alias: { h: 'herp' }, | ||||
|         boolean: 'h' | ||||
|     }; | ||||
|     var aliasedArgv = parse(aliased, opts); | ||||
|     var propertyArgv = parse(regular, opts); | ||||
|     var expected = { | ||||
|         herp: true, | ||||
|         h: true, | ||||
|         '_': [ ] | ||||
|     }; | ||||
|  | ||||
|     t.same(aliasedArgv, expected); | ||||
|     t.same(propertyArgv, expected);  | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| // regression, see https://github.com/substack/node-optimist/issues/71 | ||||
| test('boolean and --x=true', function(t) { | ||||
|     var parsed = parse(['--boool', '--other=true'], { | ||||
|         boolean: 'boool' | ||||
|     }); | ||||
|  | ||||
|     t.same(parsed.boool, true); | ||||
|     t.same(parsed.other, 'true'); | ||||
|  | ||||
|     parsed = parse(['--boool', '--other=false'], { | ||||
|         boolean: 'boool' | ||||
|     }); | ||||
|      | ||||
|     t.same(parsed.boool, true); | ||||
|     t.same(parsed.other, 'false'); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										24
									
								
								node_modules/optimist/node_modules/minimist/test/dash.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								node_modules/optimist/node_modules/minimist/test/dash.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,24 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('-', function (t) { | ||||
|     t.plan(5); | ||||
|     t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] }); | ||||
|     t.deepEqual(parse([ '-' ]), { _: [ '-' ] }); | ||||
|     t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] }); | ||||
|     t.deepEqual( | ||||
|         parse([ '-b', '-' ], { boolean: 'b' }), | ||||
|         { b: true, _: [ '-' ] } | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '-s', '-' ], { string: 's' }), | ||||
|         { s: '-', _: [] } | ||||
|     ); | ||||
| }); | ||||
|  | ||||
| test('-a -- b', function (t) { | ||||
|     t.plan(3); | ||||
|     t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] }); | ||||
|     t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); | ||||
|     t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] }); | ||||
| }); | ||||
							
								
								
									
										20
									
								
								node_modules/optimist/node_modules/minimist/test/default_bool.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								node_modules/optimist/node_modules/minimist/test/default_bool.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| var test = require('tape'); | ||||
| var parse = require('../'); | ||||
|  | ||||
| test('boolean default true', function (t) { | ||||
|     var argv = parse([], { | ||||
|         boolean: 'sometrue', | ||||
|         default: { sometrue: true } | ||||
|     }); | ||||
|     t.equal(argv.sometrue, true); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean default false', function (t) { | ||||
|     var argv = parse([], { | ||||
|         boolean: 'somefalse', | ||||
|         default: { somefalse: false } | ||||
|     }); | ||||
|     t.equal(argv.somefalse, false); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										22
									
								
								node_modules/optimist/node_modules/minimist/test/dotted.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								node_modules/optimist/node_modules/minimist/test/dotted.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('dotted alias', function (t) { | ||||
|     var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); | ||||
|     t.equal(argv.a.b, 22); | ||||
|     t.equal(argv.aa.bb, 22); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('dotted default', function (t) { | ||||
|     var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}}); | ||||
|     t.equal(argv.a.b, 11); | ||||
|     t.equal(argv.aa.bb, 11); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('dotted default with no alias', function (t) { | ||||
|     var argv = parse('', {default: {'a.b': 11}}); | ||||
|     t.equal(argv.a.b, 11); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										31
									
								
								node_modules/optimist/node_modules/minimist/test/long.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								node_modules/optimist/node_modules/minimist/test/long.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| var test = require('tape'); | ||||
| var parse = require('../'); | ||||
|  | ||||
| test('long opts', function (t) { | ||||
|     t.deepEqual( | ||||
|         parse([ '--bool' ]), | ||||
|         { bool : true, _ : [] }, | ||||
|         'long boolean' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '--pow', 'xixxle' ]), | ||||
|         { pow : 'xixxle', _ : [] }, | ||||
|         'long capture sp' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '--pow=xixxle' ]), | ||||
|         { pow : 'xixxle', _ : [] }, | ||||
|         'long capture eq' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '--host', 'localhost', '--port', '555' ]), | ||||
|         { host : 'localhost', port : 555, _ : [] }, | ||||
|         'long captures sp' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '--host=localhost', '--port=555' ]), | ||||
|         { host : 'localhost', port : 555, _ : [] }, | ||||
|         'long captures eq' | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										36
									
								
								node_modules/optimist/node_modules/minimist/test/num.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								node_modules/optimist/node_modules/minimist/test/num.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('nums', function (t) { | ||||
|     var argv = parse([ | ||||
|         '-x', '1234', | ||||
|         '-y', '5.67', | ||||
|         '-z', '1e7', | ||||
|         '-w', '10f', | ||||
|         '--hex', '0xdeadbeef', | ||||
|         '789' | ||||
|     ]); | ||||
|     t.deepEqual(argv, { | ||||
|         x : 1234, | ||||
|         y : 5.67, | ||||
|         z : 1e7, | ||||
|         w : '10f', | ||||
|         hex : 0xdeadbeef, | ||||
|         _ : [ 789 ] | ||||
|     }); | ||||
|     t.deepEqual(typeof argv.x, 'number'); | ||||
|     t.deepEqual(typeof argv.y, 'number'); | ||||
|     t.deepEqual(typeof argv.z, 'number'); | ||||
|     t.deepEqual(typeof argv.w, 'string'); | ||||
|     t.deepEqual(typeof argv.hex, 'number'); | ||||
|     t.deepEqual(typeof argv._[0], 'number'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('already a number', function (t) { | ||||
|     var argv = parse([ '-x', 1234, 789 ]); | ||||
|     t.deepEqual(argv, { x : 1234, _ : [ 789 ] }); | ||||
|     t.deepEqual(typeof argv.x, 'number'); | ||||
|     t.deepEqual(typeof argv._[0], 'number'); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										197
									
								
								node_modules/optimist/node_modules/minimist/test/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								node_modules/optimist/node_modules/minimist/test/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,197 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('parse args', function (t) { | ||||
|     t.deepEqual( | ||||
|         parse([ '--no-moo' ]), | ||||
|         { moo : false, _ : [] }, | ||||
|         'no' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), | ||||
|         { v : ['a','b','c'], _ : [] }, | ||||
|         'multi' | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('comprehensive', function (t) { | ||||
|     t.deepEqual( | ||||
|         parse([ | ||||
|             '--name=meowmers', 'bare', '-cats', 'woo', | ||||
|             '-h', 'awesome', '--multi=quux', | ||||
|             '--key', 'value', | ||||
|             '-b', '--bool', '--no-meep', '--multi=baz', | ||||
|             '--', '--not-a-flag', 'eek' | ||||
|         ]), | ||||
|         { | ||||
|             c : true, | ||||
|             a : true, | ||||
|             t : true, | ||||
|             s : 'woo', | ||||
|             h : 'awesome', | ||||
|             b : true, | ||||
|             bool : true, | ||||
|             key : 'value', | ||||
|             multi : [ 'quux', 'baz' ], | ||||
|             meep : false, | ||||
|             name : 'meowmers', | ||||
|             _ : [ 'bare', '--not-a-flag', 'eek' ] | ||||
|         } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('flag boolean', function (t) { | ||||
|     var argv = parse([ '-t', 'moo' ], { boolean: 't' }); | ||||
|     t.deepEqual(argv, { t : true, _ : [ 'moo' ] }); | ||||
|     t.deepEqual(typeof argv.t, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('flag boolean value', function (t) { | ||||
|     var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { | ||||
|         boolean: [ 't', 'verbose' ], | ||||
|         default: { verbose: true } | ||||
|     }); | ||||
|      | ||||
|     t.deepEqual(argv, { | ||||
|         verbose: false, | ||||
|         t: true, | ||||
|         _: ['moo'] | ||||
|     }); | ||||
|      | ||||
|     t.deepEqual(typeof argv.verbose, 'boolean'); | ||||
|     t.deepEqual(typeof argv.t, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('newlines in params' , function (t) { | ||||
|     var args = parse([ '-s', "X\nX" ]) | ||||
|     t.deepEqual(args, { _ : [], s : "X\nX" }); | ||||
|      | ||||
|     // reproduce in bash: | ||||
|     // VALUE="new | ||||
|     // line" | ||||
|     // node program.js --s="$VALUE" | ||||
|     args = parse([ "--s=X\nX" ]) | ||||
|     t.deepEqual(args, { _ : [], s : "X\nX" }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('strings' , function (t) { | ||||
|     var s = parse([ '-s', '0001234' ], { string: 's' }).s; | ||||
|     t.equal(s, '0001234'); | ||||
|     t.equal(typeof s, 'string'); | ||||
|      | ||||
|     var x = parse([ '-x', '56' ], { string: 'x' }).x; | ||||
|     t.equal(x, '56'); | ||||
|     t.equal(typeof x, 'string'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('stringArgs', function (t) { | ||||
|     var s = parse([ '  ', '  ' ], { string: '_' })._; | ||||
|     t.same(s.length, 2); | ||||
|     t.same(typeof s[0], 'string'); | ||||
|     t.same(s[0], '  '); | ||||
|     t.same(typeof s[1], 'string'); | ||||
|     t.same(s[1], '  '); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('empty strings', function(t) { | ||||
|     var s = parse([ '-s' ], { string: 's' }).s; | ||||
|     t.equal(s, ''); | ||||
|     t.equal(typeof s, 'string'); | ||||
|  | ||||
|     var str = parse([ '--str' ], { string: 'str' }).str; | ||||
|     t.equal(str, ''); | ||||
|     t.equal(typeof str, 'string'); | ||||
|  | ||||
|     var letters = parse([ '-art' ], { | ||||
|         string: [ 'a', 't' ] | ||||
|     }); | ||||
|  | ||||
|     t.equal(letters.a, ''); | ||||
|     t.equal(letters.r, true); | ||||
|     t.equal(letters.t, ''); | ||||
|  | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
|  | ||||
| test('string and alias', function(t) { | ||||
|     var x = parse([ '--str',  '000123' ], { | ||||
|         string: 's', | ||||
|         alias: { s: 'str' } | ||||
|     }); | ||||
|  | ||||
|     t.equal(x.str, '000123'); | ||||
|     t.equal(typeof x.str, 'string'); | ||||
|     t.equal(x.s, '000123'); | ||||
|     t.equal(typeof x.s, 'string'); | ||||
|  | ||||
|     var y = parse([ '-s',  '000123' ], { | ||||
|         string: 'str', | ||||
|         alias: { str: 's' } | ||||
|     }); | ||||
|  | ||||
|     t.equal(y.str, '000123'); | ||||
|     t.equal(typeof y.str, 'string'); | ||||
|     t.equal(y.s, '000123'); | ||||
|     t.equal(typeof y.s, 'string'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('slashBreak', function (t) { | ||||
|     t.same( | ||||
|         parse([ '-I/foo/bar/baz' ]), | ||||
|         { I : '/foo/bar/baz', _ : [] } | ||||
|     ); | ||||
|     t.same( | ||||
|         parse([ '-xyz/foo/bar/baz' ]), | ||||
|         { x : true, y : true, z : '/foo/bar/baz', _ : [] } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('alias', function (t) { | ||||
|     var argv = parse([ '-f', '11', '--zoom', '55' ], { | ||||
|         alias: { z: 'zoom' } | ||||
|     }); | ||||
|     t.equal(argv.zoom, 55); | ||||
|     t.equal(argv.z, argv.zoom); | ||||
|     t.equal(argv.f, 11); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('multiAlias', function (t) { | ||||
|     var argv = parse([ '-f', '11', '--zoom', '55' ], { | ||||
|         alias: { z: [ 'zm', 'zoom' ] } | ||||
|     }); | ||||
|     t.equal(argv.zoom, 55); | ||||
|     t.equal(argv.z, argv.zoom); | ||||
|     t.equal(argv.z, argv.zm); | ||||
|     t.equal(argv.f, 11); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('nested dotted objects', function (t) { | ||||
|     var argv = parse([ | ||||
|         '--foo.bar', '3', '--foo.baz', '4', | ||||
|         '--foo.quux.quibble', '5', '--foo.quux.o_O', | ||||
|         '--beep.boop' | ||||
|     ]); | ||||
|      | ||||
|     t.same(argv.foo, { | ||||
|         bar : 3, | ||||
|         baz : 4, | ||||
|         quux : { | ||||
|             quibble : 5, | ||||
|             o_O : true | ||||
|         } | ||||
|     }); | ||||
|     t.same(argv.beep, { boop : true }); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										9
									
								
								node_modules/optimist/node_modules/minimist/test/parse_modified.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								node_modules/optimist/node_modules/minimist/test/parse_modified.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('parse with modifier functions' , function (t) { | ||||
|     t.plan(1); | ||||
|      | ||||
|     var argv = parse([ '-b', '123' ], { boolean: 'b' }); | ||||
|     t.deepEqual(argv, { b: true, _: ['123'] }); | ||||
| }); | ||||
							
								
								
									
										67
									
								
								node_modules/optimist/node_modules/minimist/test/short.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								node_modules/optimist/node_modules/minimist/test/short.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('numeric short args', function (t) { | ||||
|     t.plan(2); | ||||
|     t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] }); | ||||
|     t.deepEqual( | ||||
|         parse([ '-123', '456' ]), | ||||
|         { 1: true, 2: true, 3: 456, _: [] } | ||||
|     ); | ||||
| }); | ||||
|  | ||||
| test('short', function (t) { | ||||
|     t.deepEqual( | ||||
|         parse([ '-b' ]), | ||||
|         { b : true, _ : [] }, | ||||
|         'short boolean' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ 'foo', 'bar', 'baz' ]), | ||||
|         { _ : [ 'foo', 'bar', 'baz' ] }, | ||||
|         'bare' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '-cats' ]), | ||||
|         { c : true, a : true, t : true, s : true, _ : [] }, | ||||
|         'group' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '-cats', 'meow' ]), | ||||
|         { c : true, a : true, t : true, s : 'meow', _ : [] }, | ||||
|         'short group next' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '-h', 'localhost' ]), | ||||
|         { h : 'localhost', _ : [] }, | ||||
|         'short capture' | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         parse([ '-h', 'localhost', '-p', '555' ]), | ||||
|         { h : 'localhost', p : 555, _ : [] }, | ||||
|         'short captures' | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('mixed short bool and capture', function (t) { | ||||
|     t.same( | ||||
|         parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), | ||||
|         { | ||||
|             f : true, p : 555, h : 'localhost', | ||||
|             _ : [ 'script.js' ] | ||||
|         } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('short and long', function (t) { | ||||
|     t.deepEqual( | ||||
|         parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), | ||||
|         { | ||||
|             f : true, p : 555, h : 'localhost', | ||||
|             _ : [ 'script.js' ] | ||||
|         } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										8
									
								
								node_modules/optimist/node_modules/minimist/test/whitespace.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								node_modules/optimist/node_modules/minimist/test/whitespace.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| var parse = require('../'); | ||||
| var test = require('tape'); | ||||
|  | ||||
| test('whitespace should be whitespace' , function (t) { | ||||
|     t.plan(1); | ||||
|     var x = parse([ '-x', '\t' ]).x; | ||||
|     t.equal(x, '\t'); | ||||
| }); | ||||
							
								
								
									
										72
									
								
								node_modules/optimist/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								node_modules/optimist/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,72 @@ | ||||
| { | ||||
|   "_args": [ | ||||
|     [ | ||||
|       "optimist@0.6.1", | ||||
|       "E:\\python\\setup-php" | ||||
|     ] | ||||
|   ], | ||||
|   "_development": true, | ||||
|   "_from": "optimist@0.6.1", | ||||
|   "_id": "optimist@0.6.1", | ||||
|   "_inBundle": false, | ||||
|   "_integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", | ||||
|   "_location": "/optimist", | ||||
|   "_phantomChildren": {}, | ||||
|   "_requested": { | ||||
|     "type": "version", | ||||
|     "registry": true, | ||||
|     "raw": "optimist@0.6.1", | ||||
|     "name": "optimist", | ||||
|     "escapedName": "optimist", | ||||
|     "rawSpec": "0.6.1", | ||||
|     "saveSpec": null, | ||||
|     "fetchSpec": "0.6.1" | ||||
|   }, | ||||
|   "_requiredBy": [ | ||||
|     "/handlebars" | ||||
|   ], | ||||
|   "_resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", | ||||
|   "_spec": "0.6.1", | ||||
|   "_where": "E:\\python\\setup-php", | ||||
|   "author": { | ||||
|     "name": "James Halliday", | ||||
|     "email": "mail@substack.net", | ||||
|     "url": "http://substack.net" | ||||
|   }, | ||||
|   "bugs": { | ||||
|     "url": "https://github.com/substack/node-optimist/issues" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "minimist": "~0.0.1", | ||||
|     "wordwrap": "~0.0.2" | ||||
|   }, | ||||
|   "description": "Light-weight option parsing with an argv hash. No optstrings attached.", | ||||
|   "devDependencies": { | ||||
|     "hashish": "~0.0.4", | ||||
|     "tap": "~0.4.0" | ||||
|   }, | ||||
|   "engine": { | ||||
|     "node": ">=0.4" | ||||
|   }, | ||||
|   "homepage": "https://github.com/substack/node-optimist#readme", | ||||
|   "keywords": [ | ||||
|     "argument", | ||||
|     "args", | ||||
|     "option", | ||||
|     "parser", | ||||
|     "parsing", | ||||
|     "cli", | ||||
|     "command" | ||||
|   ], | ||||
|   "license": "MIT/X11", | ||||
|   "main": "./index.js", | ||||
|   "name": "optimist", | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
|     "url": "git+ssh://git@github.com/substack/node-optimist.git" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "test": "tap ./test/*.js" | ||||
|   }, | ||||
|   "version": "0.6.1" | ||||
| } | ||||
							
								
								
									
										513
									
								
								node_modules/optimist/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										513
									
								
								node_modules/optimist/readme.markdown
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,513 @@ | ||||
| # DEPRECATION NOTICE | ||||
|  | ||||
| I don't want to maintain this module anymore since I just use | ||||
| [minimist](https://npmjs.org/package/minimist), the argument parsing engine, | ||||
| directly instead nowadays. | ||||
|  | ||||
| See [yargs](https://github.com/chevex/yargs) for the modern, pirate-themed | ||||
| successor to optimist. | ||||
|  | ||||
| [](https://github.com/chevex/yargs) | ||||
|  | ||||
| You should also consider [nomnom](https://github.com/harthur/nomnom). | ||||
|  | ||||
| optimist | ||||
| ======== | ||||
|  | ||||
| Optimist is a node.js library for option parsing for people who hate option | ||||
| parsing. More specifically, this module is for people who like all the --bells | ||||
| and -whistlz of program usage but think optstrings are a waste of time. | ||||
|  | ||||
| With optimist, option parsing doesn't have to suck (as much). | ||||
|  | ||||
| [](http://travis-ci.org/substack/node-optimist) | ||||
|  | ||||
| examples | ||||
| ======== | ||||
|  | ||||
| With Optimist, the options are just a hash! No optstrings attached. | ||||
| ------------------------------------------------------------------- | ||||
|  | ||||
| xup.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
|  | ||||
| if (argv.rif - 5 * argv.xup > 7.138) { | ||||
|     console.log('Buy more riffiwobbles'); | ||||
| } | ||||
| else { | ||||
|     console.log('Sell the xupptumblers'); | ||||
| } | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./xup.js --rif=55 --xup=9.52 | ||||
|     Buy more riffiwobbles | ||||
|      | ||||
|     $ ./xup.js --rif 12 --xup 8.1 | ||||
|     Sell the xupptumblers | ||||
|  | ||||
|  | ||||
|  | ||||
| But wait! There's more! You can do short options: | ||||
| ------------------------------------------------- | ||||
|   | ||||
| short.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
| console.log('(%d,%d)', argv.x, argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./short.js -x 10 -y 21 | ||||
|     (10,21) | ||||
|  | ||||
| And booleans, both long and short (and grouped): | ||||
| ---------------------------------- | ||||
|  | ||||
| bool.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var util = require('util'); | ||||
| var argv = require('optimist').argv; | ||||
|  | ||||
| if (argv.s) { | ||||
|     util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); | ||||
| } | ||||
| console.log( | ||||
|     (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') | ||||
| ); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./bool.js -s | ||||
|     The cat says: meow | ||||
|      | ||||
|     $ ./bool.js -sp | ||||
|     The cat says: meow. | ||||
|  | ||||
|     $ ./bool.js -sp --fr | ||||
|     Le chat dit: miaou. | ||||
|  | ||||
| And non-hypenated options too! Just use `argv._`! | ||||
| ------------------------------------------------- | ||||
|   | ||||
| nonopt.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist').argv; | ||||
| console.log('(%d,%d)', argv.x, argv.y); | ||||
| console.log(argv._); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./nonopt.js -x 6.82 -y 3.35 moo | ||||
|     (6.82,3.35) | ||||
|     [ 'moo' ] | ||||
|      | ||||
|     $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz | ||||
|     (0.54,1.12) | ||||
|     [ 'foo', 'bar', 'baz' ] | ||||
|  | ||||
| Plus, Optimist comes with .usage() and .demand()! | ||||
| ------------------------------------------------- | ||||
|  | ||||
| divide.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Usage: $0 -x [num] -y [num]') | ||||
|     .demand(['x','y']) | ||||
|     .argv; | ||||
|  | ||||
| console.log(argv.x / argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|   | ||||
|     $ ./divide.js -x 55 -y 11 | ||||
|     5 | ||||
|      | ||||
|     $ node ./divide.js -x 4.91 -z 2.51 | ||||
|     Usage: node ./divide.js -x [num] -y [num] | ||||
|  | ||||
|     Options: | ||||
|       -x  [required] | ||||
|       -y  [required] | ||||
|  | ||||
|     Missing required arguments: y | ||||
|  | ||||
| EVEN MORE HOLY COW | ||||
| ------------------ | ||||
|  | ||||
| default_singles.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .default('x', 10) | ||||
|     .default('y', 10) | ||||
|     .argv | ||||
| ; | ||||
| console.log(argv.x + argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./default_singles.js -x 5 | ||||
|     15 | ||||
|  | ||||
| default_hash.js: | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .default({ x : 10, y : 10 }) | ||||
|     .argv | ||||
| ; | ||||
| console.log(argv.x + argv.y); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./default_hash.js -y 7 | ||||
|     17 | ||||
|  | ||||
| And if you really want to get all descriptive about it... | ||||
| --------------------------------------------------------- | ||||
|  | ||||
| boolean_single.js | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .boolean('v') | ||||
|     .argv | ||||
| ; | ||||
| console.dir(argv); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./boolean_single.js -v foo bar baz | ||||
|     true | ||||
|     [ 'bar', 'baz', 'foo' ] | ||||
|  | ||||
| boolean_double.js | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .boolean(['x','y','z']) | ||||
|     .argv | ||||
| ; | ||||
| console.dir([ argv.x, argv.y, argv.z ]); | ||||
| console.dir(argv._); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ ./boolean_double.js -x -z one two three | ||||
|     [ true, false, true ] | ||||
|     [ 'one', 'two', 'three' ] | ||||
|  | ||||
| Optimist is here to help... | ||||
| --------------------------- | ||||
|  | ||||
| You can describe parameters for help messages and set aliases. Optimist figures | ||||
| out how to format a handy help string automatically. | ||||
|  | ||||
| line_count.js | ||||
|  | ||||
| ````javascript | ||||
| #!/usr/bin/env node | ||||
| var argv = require('optimist') | ||||
|     .usage('Count the lines in a file.\nUsage: $0') | ||||
|     .demand('f') | ||||
|     .alias('f', 'file') | ||||
|     .describe('f', 'Load a file') | ||||
|     .argv | ||||
| ; | ||||
|  | ||||
| var fs = require('fs'); | ||||
| var s = fs.createReadStream(argv.file); | ||||
|  | ||||
| var lines = 0; | ||||
| s.on('data', function (buf) { | ||||
|     lines += buf.toString().match(/\n/g).length; | ||||
| }); | ||||
|  | ||||
| s.on('end', function () { | ||||
|     console.log(lines); | ||||
| }); | ||||
| ```` | ||||
|  | ||||
| *** | ||||
|  | ||||
|     $ node line_count.js | ||||
|     Count the lines in a file. | ||||
|     Usage: node ./line_count.js | ||||
|  | ||||
|     Options: | ||||
|       -f, --file  Load a file  [required] | ||||
|  | ||||
|     Missing required arguments: f | ||||
|  | ||||
|     $ node line_count.js --file line_count.js  | ||||
|     20 | ||||
|      | ||||
|     $ node line_count.js -f line_count.js  | ||||
|     20 | ||||
|  | ||||
| methods | ||||
| ======= | ||||
|  | ||||
| By itself, | ||||
|  | ||||
| ````javascript | ||||
| require('optimist').argv | ||||
| ````` | ||||
|  | ||||
| will use `process.argv` array to construct the `argv` object. | ||||
|  | ||||
| You can pass in the `process.argv` yourself: | ||||
|  | ||||
| ````javascript | ||||
| require('optimist')([ '-x', '1', '-y', '2' ]).argv | ||||
| ```` | ||||
|  | ||||
| or use .parse() to do the same thing: | ||||
|  | ||||
| ````javascript | ||||
| require('optimist').parse([ '-x', '1', '-y', '2' ]) | ||||
| ```` | ||||
|  | ||||
| The rest of these methods below come in just before the terminating `.argv`. | ||||
|  | ||||
| .alias(key, alias) | ||||
| ------------------ | ||||
|  | ||||
| Set key names as equivalent such that updates to a key will propagate to aliases | ||||
| and vice-versa. | ||||
|  | ||||
| Optionally `.alias()` can take an object that maps keys to aliases. | ||||
|  | ||||
| .default(key, value) | ||||
| -------------------- | ||||
|  | ||||
| Set `argv[key]` to `value` if no option was specified on `process.argv`. | ||||
|  | ||||
| Optionally `.default()` can take an object that maps keys to default values. | ||||
|  | ||||
| .demand(key) | ||||
| ------------ | ||||
|  | ||||
| If `key` is a string, show the usage information and exit if `key` wasn't | ||||
| specified in `process.argv`. | ||||
|  | ||||
| If `key` is a number, demand at least as many non-option arguments, which show | ||||
| up in `argv._`. | ||||
|  | ||||
| If `key` is an Array, demand each element. | ||||
|  | ||||
| .describe(key, desc) | ||||
| -------------------- | ||||
|  | ||||
| Describe a `key` for the generated usage information. | ||||
|  | ||||
| Optionally `.describe()` can take an object that maps keys to descriptions. | ||||
|  | ||||
| .options(key, opt) | ||||
| ------------------ | ||||
|  | ||||
| Instead of chaining together `.alias().demand().default()`, you can specify | ||||
| keys in `opt` for each of the chainable methods. | ||||
|  | ||||
| For example: | ||||
|  | ||||
| ````javascript | ||||
| var argv = require('optimist') | ||||
|     .options('f', { | ||||
|         alias : 'file', | ||||
|         default : '/etc/passwd', | ||||
|     }) | ||||
|     .argv | ||||
| ; | ||||
| ```` | ||||
|  | ||||
| is the same as | ||||
|  | ||||
| ````javascript | ||||
| var argv = require('optimist') | ||||
|     .alias('f', 'file') | ||||
|     .default('f', '/etc/passwd') | ||||
|     .argv | ||||
| ; | ||||
| ```` | ||||
|  | ||||
| Optionally `.options()` can take an object that maps keys to `opt` parameters. | ||||
|  | ||||
| .usage(message) | ||||
| --------------- | ||||
|  | ||||
| Set a usage message to show which commands to use. Inside `message`, the string | ||||
| `$0` will get interpolated to the current script name or node command for the | ||||
| present script similar to how `$0` works in bash or perl. | ||||
|  | ||||
| .check(fn) | ||||
| ---------- | ||||
|  | ||||
| Check that certain conditions are met in the provided arguments. | ||||
|  | ||||
| If `fn` throws or returns `false`, show the thrown error, usage information, and | ||||
| exit. | ||||
|  | ||||
| .boolean(key) | ||||
| ------------- | ||||
|  | ||||
| Interpret `key` as a boolean. If a non-flag option follows `key` in | ||||
| `process.argv`, that string won't get set as the value of `key`. | ||||
|  | ||||
| If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be | ||||
| `false`. | ||||
|  | ||||
| If `key` is an Array, interpret all the elements as booleans. | ||||
|  | ||||
| .string(key) | ||||
| ------------ | ||||
|  | ||||
| Tell the parser logic not to interpret `key` as a number or boolean. | ||||
| This can be useful if you need to preserve leading zeros in an input. | ||||
|  | ||||
| If `key` is an Array, interpret all the elements as strings. | ||||
|  | ||||
| .wrap(columns) | ||||
| -------------- | ||||
|  | ||||
| Format usage output to wrap at `columns` many columns. | ||||
|  | ||||
| .help() | ||||
| ------- | ||||
|  | ||||
| Return the generated usage string. | ||||
|  | ||||
| .showHelp(fn=console.error) | ||||
| --------------------------- | ||||
|  | ||||
| Print the usage data using `fn` for printing. | ||||
|  | ||||
| .parse(args) | ||||
| ------------ | ||||
|  | ||||
| Parse `args` instead of `process.argv`. Returns the `argv` object. | ||||
|  | ||||
| .argv | ||||
| ----- | ||||
|  | ||||
| Get the arguments as a plain old object. | ||||
|  | ||||
| Arguments without a corresponding flag show up in the `argv._` array. | ||||
|  | ||||
| The script name or node command is available at `argv.$0` similarly to how `$0` | ||||
| works in bash or perl. | ||||
|  | ||||
| parsing tricks | ||||
| ============== | ||||
|  | ||||
| stop parsing | ||||
| ------------ | ||||
|  | ||||
| Use `--` to stop parsing flags and stuff the remainder into `argv._`. | ||||
|  | ||||
|     $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 | ||||
|     { _: [ '-c', '3', '-d', '4' ], | ||||
|       '$0': 'node ./examples/reflect.js', | ||||
|       a: 1, | ||||
|       b: 2 } | ||||
|  | ||||
| negate fields | ||||
| ------------- | ||||
|  | ||||
| If you want to explicity set a field to false instead of just leaving it | ||||
| undefined or to override a default you can do `--no-key`. | ||||
|  | ||||
|     $ node examples/reflect.js -a --no-b | ||||
|     { _: [], | ||||
|       '$0': 'node ./examples/reflect.js', | ||||
|       a: true, | ||||
|       b: false } | ||||
|  | ||||
| numbers | ||||
| ------- | ||||
|  | ||||
| Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to | ||||
| one. This way you can just `net.createConnection(argv.port)` and you can add | ||||
| numbers out of `argv` with `+` without having that mean concatenation, | ||||
| which is super frustrating. | ||||
|  | ||||
| duplicates | ||||
| ---------- | ||||
|  | ||||
| If you specify a flag multiple times it will get turned into an array containing | ||||
| all the values in order. | ||||
|  | ||||
|     $ node examples/reflect.js -x 5 -x 8 -x 0 | ||||
|     { _: [], | ||||
|       '$0': 'node ./examples/reflect.js', | ||||
|         x: [ 5, 8, 0 ] } | ||||
|  | ||||
| dot notation | ||||
| ------------ | ||||
|  | ||||
| When you use dots (`.`s) in argument names, an implicit object path is assumed. | ||||
| This lets you organize arguments into nested objects. | ||||
|  | ||||
|      $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 | ||||
|      { _: [], | ||||
|        '$0': 'node ./examples/reflect.js', | ||||
|          foo: { bar: { baz: 33 }, quux: 5 } } | ||||
|  | ||||
| short numbers | ||||
| ------------- | ||||
|  | ||||
| Short numeric `head -n5` style argument work too: | ||||
|  | ||||
|     $ node reflect.js -n123 -m456 | ||||
|     { '3': true, | ||||
|       '6': true, | ||||
|       _: [], | ||||
|       '$0': 'node ./reflect.js', | ||||
|       n: 123, | ||||
|       m: 456 } | ||||
|  | ||||
| installation | ||||
| ============ | ||||
|  | ||||
| With [npm](http://github.com/isaacs/npm), just do: | ||||
|     npm install optimist | ||||
|   | ||||
| or clone this project on github: | ||||
|  | ||||
|     git clone http://github.com/substack/node-optimist.git | ||||
|  | ||||
| To run the tests with [expresso](http://github.com/visionmedia/expresso), | ||||
| just do: | ||||
|      | ||||
|     expresso | ||||
|  | ||||
| inspired By | ||||
| =========== | ||||
|  | ||||
| This module is loosely inspired by Perl's | ||||
| [Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). | ||||
							
								
								
									
										71
									
								
								node_modules/optimist/test/_.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								node_modules/optimist/test/_.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,71 @@ | ||||
| var spawn = require('child_process').spawn; | ||||
| var test = require('tap').test; | ||||
|  | ||||
| test('dotSlashEmpty', testCmd('./bin.js', [])); | ||||
|  | ||||
| test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); | ||||
|  | ||||
| test('nodeEmpty', testCmd('node bin.js', [])); | ||||
|  | ||||
| test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); | ||||
|  | ||||
| test('whichNodeEmpty', function (t) { | ||||
|     var which = spawn('which', ['node']); | ||||
|      | ||||
|     which.stdout.on('data', function (buf) { | ||||
|         t.test( | ||||
|             testCmd(buf.toString().trim() + ' bin.js', []) | ||||
|         ); | ||||
|         t.end(); | ||||
|     }); | ||||
|      | ||||
|     which.stderr.on('data', function (err) { | ||||
|         assert.error(err); | ||||
|         t.end(); | ||||
|     }); | ||||
| }); | ||||
|  | ||||
| test('whichNodeArgs', function (t) { | ||||
|     var which = spawn('which', ['node']); | ||||
|  | ||||
|     which.stdout.on('data', function (buf) { | ||||
|         t.test( | ||||
|             testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) | ||||
|         ); | ||||
|         t.end(); | ||||
|     }); | ||||
|      | ||||
|     which.stderr.on('data', function (err) { | ||||
|         t.error(err); | ||||
|         t.end(); | ||||
|     }); | ||||
| }); | ||||
|  | ||||
| function testCmd (cmd, args) { | ||||
|  | ||||
|     return function (t) { | ||||
|         var to = setTimeout(function () { | ||||
|             assert.fail('Never got stdout data.') | ||||
|         }, 5000); | ||||
|          | ||||
|         var oldDir = process.cwd(); | ||||
|         process.chdir(__dirname + '/_'); | ||||
|          | ||||
|         var cmds = cmd.split(' '); | ||||
|          | ||||
|         var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); | ||||
|         process.chdir(oldDir); | ||||
|          | ||||
|         bin.stderr.on('data', function (err) { | ||||
|             t.error(err); | ||||
|             t.end(); | ||||
|         }); | ||||
|          | ||||
|         bin.stdout.on('data', function (buf) { | ||||
|             clearTimeout(to); | ||||
|             var _ = JSON.parse(buf.toString()); | ||||
|             t.same(_.map(String), args.map(String)); | ||||
|             t.end(); | ||||
|         }); | ||||
|     }; | ||||
| } | ||||
							
								
								
									
										2
									
								
								node_modules/optimist/test/_/argv.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								node_modules/optimist/test/_/argv.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| #!/usr/bin/env node | ||||
| console.log(JSON.stringify(process.argv)); | ||||
							
								
								
									
										3
									
								
								node_modules/optimist/test/_/bin.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								node_modules/optimist/test/_/bin.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| #!/usr/bin/env node | ||||
| var argv = require('../../index').argv | ||||
| console.log(JSON.stringify(argv._)); | ||||
							
								
								
									
										31
									
								
								node_modules/optimist/test/dash.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								node_modules/optimist/test/dash.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| var optimist = require('../index'); | ||||
| var test = require('tap').test; | ||||
|  | ||||
| test('-', function (t) { | ||||
|     t.plan(5); | ||||
|     t.deepEqual( | ||||
|         fix(optimist.parse([ '-n', '-' ])), | ||||
|         { n: '-', _: [] } | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         fix(optimist.parse([ '-' ])), | ||||
|         { _: [ '-' ] } | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         fix(optimist.parse([ '-f-' ])), | ||||
|         { f: '-', _: [] } | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         fix(optimist([ '-b', '-' ]).boolean('b').argv), | ||||
|         { b: true, _: [ '-' ] } | ||||
|     ); | ||||
|     t.deepEqual( | ||||
|         fix(optimist([ '-s', '-' ]).string('s').argv), | ||||
|         { s: '-', _: [] } | ||||
|     ); | ||||
| }); | ||||
|  | ||||
| function fix (obj) { | ||||
|     delete obj.$0; | ||||
|     return obj; | ||||
| } | ||||
							
								
								
									
										446
									
								
								node_modules/optimist/test/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										446
									
								
								node_modules/optimist/test/parse.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,446 @@ | ||||
| var optimist = require('../index'); | ||||
| var path = require('path'); | ||||
| var test = require('tap').test; | ||||
|  | ||||
| var $0 = 'node ./' + path.relative(process.cwd(), __filename); | ||||
|  | ||||
| test('short boolean', function (t) { | ||||
|     var parse = optimist.parse([ '-b' ]); | ||||
|     t.same(parse, { b : true, _ : [], $0 : $0 }); | ||||
|     t.same(typeof parse.b, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('long boolean', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '--bool' ]), | ||||
|         { bool : true, _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|      | ||||
| test('bare', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ 'foo', 'bar', 'baz' ]), | ||||
|         { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('short group', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-cats' ]), | ||||
|         { c : true, a : true, t : true, s : true, _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('short group next', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-cats', 'meow' ]), | ||||
|         { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('short capture', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-h', 'localhost' ]), | ||||
|         { h : 'localhost', _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('short captures', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-h', 'localhost', '-p', '555' ]), | ||||
|         { h : 'localhost', p : 555, _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('long capture sp', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '--pow', 'xixxle' ]), | ||||
|         { pow : 'xixxle', _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('long capture eq', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '--pow=xixxle' ]), | ||||
|         { pow : 'xixxle', _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end() | ||||
| }); | ||||
|  | ||||
| test('long captures sp', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '--host', 'localhost', '--port', '555' ]), | ||||
|         { host : 'localhost', port : 555, _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('long captures eq', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '--host=localhost', '--port=555' ]), | ||||
|         { host : 'localhost', port : 555, _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('mixed short bool and capture', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), | ||||
|         { | ||||
|             f : true, p : 555, h : 'localhost', | ||||
|             _ : [ 'script.js' ], $0 : $0, | ||||
|         } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('short and long', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), | ||||
|         { | ||||
|             f : true, p : 555, h : 'localhost', | ||||
|             _ : [ 'script.js' ], $0 : $0, | ||||
|         } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('no', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '--no-moo' ]), | ||||
|         { moo : false, _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('multi', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), | ||||
|         { v : ['a','b','c'], _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|   | ||||
| test('comprehensive', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ | ||||
|             '--name=meowmers', 'bare', '-cats', 'woo', | ||||
|             '-h', 'awesome', '--multi=quux', | ||||
|             '--key', 'value', | ||||
|             '-b', '--bool', '--no-meep', '--multi=baz', | ||||
|             '--', '--not-a-flag', 'eek' | ||||
|         ]), | ||||
|         { | ||||
|             c : true, | ||||
|             a : true, | ||||
|             t : true, | ||||
|             s : 'woo', | ||||
|             h : 'awesome', | ||||
|             b : true, | ||||
|             bool : true, | ||||
|             key : 'value', | ||||
|             multi : [ 'quux', 'baz' ], | ||||
|             meep : false, | ||||
|             name : 'meowmers', | ||||
|             _ : [ 'bare', '--not-a-flag', 'eek' ], | ||||
|             $0 : $0 | ||||
|         } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('nums', function (t) { | ||||
|     var argv = optimist.parse([ | ||||
|         '-x', '1234', | ||||
|         '-y', '5.67', | ||||
|         '-z', '1e7', | ||||
|         '-w', '10f', | ||||
|         '--hex', '0xdeadbeef', | ||||
|         '789', | ||||
|     ]); | ||||
|     t.same(argv, { | ||||
|         x : 1234, | ||||
|         y : 5.67, | ||||
|         z : 1e7, | ||||
|         w : '10f', | ||||
|         hex : 0xdeadbeef, | ||||
|         _ : [ 789 ], | ||||
|         $0 : $0 | ||||
|     }); | ||||
|     t.same(typeof argv.x, 'number'); | ||||
|     t.same(typeof argv.y, 'number'); | ||||
|     t.same(typeof argv.z, 'number'); | ||||
|     t.same(typeof argv.w, 'string'); | ||||
|     t.same(typeof argv.hex, 'number'); | ||||
|     t.same(typeof argv._[0], 'number'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('flag boolean', function (t) { | ||||
|     var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; | ||||
|     t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 }); | ||||
|     t.same(typeof parse.t, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('flag boolean value', function (t) { | ||||
|     var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) | ||||
|         .boolean(['t', 'verbose']).default('verbose', true).argv; | ||||
|      | ||||
|     t.same(parse, { | ||||
|         verbose: false, | ||||
|         t: true, | ||||
|         _: ['moo'], | ||||
|         $0 : $0 | ||||
|     }); | ||||
|      | ||||
|     t.same(typeof parse.verbose, 'boolean'); | ||||
|     t.same(typeof parse.t, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('flag boolean default false', function (t) { | ||||
|     var parse = optimist(['moo']) | ||||
|         .boolean(['t', 'verbose']) | ||||
|         .default('verbose', false) | ||||
|         .default('t', false).argv; | ||||
|      | ||||
|     t.same(parse, { | ||||
|         verbose: false, | ||||
|         t: false, | ||||
|         _: ['moo'], | ||||
|         $0 : $0 | ||||
|     }); | ||||
|      | ||||
|     t.same(typeof parse.verbose, 'boolean'); | ||||
|     t.same(typeof parse.t, 'boolean'); | ||||
|     t.end(); | ||||
|  | ||||
| }); | ||||
|  | ||||
| test('boolean groups', function (t) { | ||||
|     var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) | ||||
|         .boolean(['x','y','z']).argv; | ||||
|      | ||||
|     t.same(parse, { | ||||
|         x : true, | ||||
|         y : false, | ||||
|         z : true, | ||||
|         _ : [ 'one', 'two', 'three' ], | ||||
|         $0 : $0 | ||||
|     }); | ||||
|      | ||||
|     t.same(typeof parse.x, 'boolean'); | ||||
|     t.same(typeof parse.y, 'boolean'); | ||||
|     t.same(typeof parse.z, 'boolean'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('newlines in params' , function (t) { | ||||
|     var args = optimist.parse([ '-s', "X\nX" ]) | ||||
|     t.same(args, { _ : [], s : "X\nX", $0 : $0 }); | ||||
|  | ||||
|     // reproduce in bash: | ||||
|     // VALUE="new | ||||
|     // line" | ||||
|     // node program.js --s="$VALUE" | ||||
|     args = optimist.parse([ "--s=X\nX" ]) | ||||
|     t.same(args, { _ : [], s : "X\nX", $0 : $0 }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('strings' , function (t) { | ||||
|     var s = optimist([ '-s', '0001234' ]).string('s').argv.s; | ||||
|     t.same(s, '0001234'); | ||||
|     t.same(typeof s, 'string'); | ||||
|      | ||||
|     var x = optimist([ '-x', '56' ]).string('x').argv.x; | ||||
|     t.same(x, '56'); | ||||
|     t.same(typeof x, 'string'); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('stringArgs', function (t) { | ||||
|     var s = optimist([ '  ', '  ' ]).string('_').argv._; | ||||
|     t.same(s.length, 2); | ||||
|     t.same(typeof s[0], 'string'); | ||||
|     t.same(s[0], '  '); | ||||
|     t.same(typeof s[1], 'string'); | ||||
|     t.same(s[1], '  '); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('slashBreak', function (t) { | ||||
|     t.same( | ||||
|         optimist.parse([ '-I/foo/bar/baz' ]), | ||||
|         { I : '/foo/bar/baz', _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.same( | ||||
|         optimist.parse([ '-xyz/foo/bar/baz' ]), | ||||
|         { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 } | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('alias', function (t) { | ||||
|     var argv = optimist([ '-f', '11', '--zoom', '55' ]) | ||||
|         .alias('z', 'zoom') | ||||
|         .argv | ||||
|     ; | ||||
|     t.equal(argv.zoom, 55); | ||||
|     t.equal(argv.z, argv.zoom); | ||||
|     t.equal(argv.f, 11); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('multiAlias', function (t) { | ||||
|     var argv = optimist([ '-f', '11', '--zoom', '55' ]) | ||||
|         .alias('z', [ 'zm', 'zoom' ]) | ||||
|         .argv | ||||
|     ; | ||||
|     t.equal(argv.zoom, 55); | ||||
|     t.equal(argv.z, argv.zoom); | ||||
|     t.equal(argv.z, argv.zm); | ||||
|     t.equal(argv.f, 11); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean default true', function (t) { | ||||
|     var argv = optimist.options({ | ||||
|         sometrue: { | ||||
|             boolean: true, | ||||
|             default: true | ||||
|         } | ||||
|     }).argv; | ||||
|    | ||||
|     t.equal(argv.sometrue, true); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean default false', function (t) { | ||||
|     var argv = optimist.options({ | ||||
|         somefalse: { | ||||
|             boolean: true, | ||||
|             default: false | ||||
|         } | ||||
|     }).argv; | ||||
|  | ||||
|     t.equal(argv.somefalse, false); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('nested dotted objects', function (t) { | ||||
|     var argv = optimist([ | ||||
|         '--foo.bar', '3', '--foo.baz', '4', | ||||
|         '--foo.quux.quibble', '5', '--foo.quux.o_O', | ||||
|         '--beep.boop' | ||||
|     ]).argv; | ||||
|      | ||||
|     t.same(argv.foo, { | ||||
|         bar : 3, | ||||
|         baz : 4, | ||||
|         quux : { | ||||
|             quibble : 5, | ||||
|             o_O : true | ||||
|         }, | ||||
|     }); | ||||
|     t.same(argv.beep, { boop : true }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean and alias with chainable api', function (t) { | ||||
|     var aliased = [ '-h', 'derp' ]; | ||||
|     var regular = [ '--herp',  'derp' ]; | ||||
|     var opts = { | ||||
|         herp: { alias: 'h', boolean: true } | ||||
|     }; | ||||
|     var aliasedArgv = optimist(aliased) | ||||
|         .boolean('herp') | ||||
|         .alias('h', 'herp') | ||||
|         .argv; | ||||
|     var propertyArgv = optimist(regular) | ||||
|         .boolean('herp') | ||||
|         .alias('h', 'herp') | ||||
|         .argv; | ||||
|     var expected = { | ||||
|         herp: true, | ||||
|         h: true, | ||||
|         '_': [ 'derp' ], | ||||
|         '$0': $0, | ||||
|     }; | ||||
|  | ||||
|     t.same(aliasedArgv, expected); | ||||
|     t.same(propertyArgv, expected);  | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean and alias with options hash', function (t) { | ||||
|     var aliased = [ '-h', 'derp' ]; | ||||
|     var regular = [ '--herp', 'derp' ]; | ||||
|     var opts = { | ||||
|         herp: { alias: 'h', boolean: true } | ||||
|     }; | ||||
|     var aliasedArgv = optimist(aliased) | ||||
|       .options(opts) | ||||
|       .argv; | ||||
|     var propertyArgv = optimist(regular).options(opts).argv; | ||||
|     var expected = { | ||||
|         herp: true, | ||||
|         h: true, | ||||
|         '_': [ 'derp' ], | ||||
|         '$0': $0, | ||||
|     }; | ||||
|  | ||||
|     t.same(aliasedArgv, expected); | ||||
|     t.same(propertyArgv, expected); | ||||
|  | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('boolean and alias using explicit true', function (t) { | ||||
|     var aliased = [ '-h', 'true' ]; | ||||
|     var regular = [ '--herp',  'true' ]; | ||||
|     var opts = { | ||||
|         herp: { alias: 'h', boolean: true } | ||||
|     }; | ||||
|     var aliasedArgv = optimist(aliased) | ||||
|         .boolean('h') | ||||
|         .alias('h', 'herp') | ||||
|         .argv; | ||||
|     var propertyArgv = optimist(regular) | ||||
|         .boolean('h') | ||||
|         .alias('h', 'herp') | ||||
|         .argv; | ||||
|     var expected = { | ||||
|         herp: true, | ||||
|         h: true, | ||||
|         '_': [ ], | ||||
|         '$0': $0, | ||||
|     }; | ||||
|  | ||||
|     t.same(aliasedArgv, expected); | ||||
|     t.same(propertyArgv, expected);  | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| // regression, see https://github.com/substack/node-optimist/issues/71 | ||||
| test('boolean and --x=true', function(t) { | ||||
|     var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv; | ||||
|  | ||||
|     t.same(parsed.boool, true); | ||||
|     t.same(parsed.other, 'true'); | ||||
|  | ||||
|     parsed = optimist(['--boool', '--other=false']).boolean('boool').argv; | ||||
|  | ||||
|     t.same(parsed.boool, true); | ||||
|     t.same(parsed.other, 'false'); | ||||
|     t.end(); | ||||
| }); | ||||
							
								
								
									
										14
									
								
								node_modules/optimist/test/parse_modified.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								node_modules/optimist/test/parse_modified.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | ||||
| var optimist = require('../'); | ||||
| var test = require('tap').test; | ||||
|  | ||||
| test('parse with modifier functions' , function (t) { | ||||
|     t.plan(1); | ||||
|      | ||||
|     var argv = optimist().boolean('b').parse([ '-b', '123' ]); | ||||
|     t.deepEqual(fix(argv), { b: true, _: ['123'] }); | ||||
| }); | ||||
|  | ||||
| function fix (obj) { | ||||
|     delete obj.$0; | ||||
|     return obj; | ||||
| } | ||||
							
								
								
									
										16
									
								
								node_modules/optimist/test/short.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								node_modules/optimist/test/short.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| var optimist = require('../index'); | ||||
| var test = require('tap').test; | ||||
|  | ||||
| test('-n123', function (t) { | ||||
|     t.plan(1); | ||||
|     var parse = optimist.parse([ '-n123' ]); | ||||
|     t.equal(parse.n, 123); | ||||
| }); | ||||
|  | ||||
| test('-123', function (t) { | ||||
|     t.plan(3); | ||||
|     var parse = optimist.parse([ '-123', '456' ]); | ||||
|     t.equal(parse['1'], true); | ||||
|     t.equal(parse['2'], true); | ||||
|     t.equal(parse['3'], 456); | ||||
| }); | ||||
							
								
								
									
										292
									
								
								node_modules/optimist/test/usage.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								node_modules/optimist/test/usage.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,292 @@ | ||||
| var Hash = require('hashish'); | ||||
| var optimist = require('../index'); | ||||
| var test = require('tap').test; | ||||
|  | ||||
| test('usageFail', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('-x 10 -z 20'.split(' ')) | ||||
|             .usage('Usage: $0 -x NUM -y NUM') | ||||
|             .demand(['x','y']) | ||||
|             .argv; | ||||
|     }); | ||||
|     t.same( | ||||
|         r.result, | ||||
|         { x : 10, z : 20, _ : [], $0 : './usage' } | ||||
|     ); | ||||
|  | ||||
|     t.same( | ||||
|         r.errors.join('\n').split(/\n+/), | ||||
|         [ | ||||
|             'Usage: ./usage -x NUM -y NUM', | ||||
|             'Options:', | ||||
|             '  -x  [required]', | ||||
|             '  -y  [required]', | ||||
|             'Missing required arguments: y', | ||||
|         ] | ||||
|     ); | ||||
|     t.same(r.logs, []); | ||||
|     t.ok(r.exit); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
|  | ||||
| test('usagePass', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('-x 10 -y 20'.split(' ')) | ||||
|             .usage('Usage: $0 -x NUM -y NUM') | ||||
|             .demand(['x','y']) | ||||
|             .argv; | ||||
|     }); | ||||
|     t.same(r, { | ||||
|         result : { x : 10, y : 20, _ : [], $0 : './usage' }, | ||||
|         errors : [], | ||||
|         logs : [], | ||||
|         exit : false, | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('checkPass', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('-x 10 -y 20'.split(' ')) | ||||
|             .usage('Usage: $0 -x NUM -y NUM') | ||||
|             .check(function (argv) { | ||||
|                 if (!('x' in argv)) throw 'You forgot about -x'; | ||||
|                 if (!('y' in argv)) throw 'You forgot about -y'; | ||||
|             }) | ||||
|             .argv; | ||||
|     }); | ||||
|     t.same(r, { | ||||
|         result : { x : 10, y : 20, _ : [], $0 : './usage' }, | ||||
|         errors : [], | ||||
|         logs : [], | ||||
|         exit : false, | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('checkFail', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('-x 10 -z 20'.split(' ')) | ||||
|             .usage('Usage: $0 -x NUM -y NUM') | ||||
|             .check(function (argv) { | ||||
|                 if (!('x' in argv)) throw 'You forgot about -x'; | ||||
|                 if (!('y' in argv)) throw 'You forgot about -y'; | ||||
|             }) | ||||
|             .argv; | ||||
|     }); | ||||
|  | ||||
|     t.same( | ||||
|         r.result, | ||||
|         { x : 10, z : 20, _ : [], $0 : './usage' } | ||||
|     ); | ||||
|  | ||||
|     t.same( | ||||
|         r.errors.join('\n').split(/\n+/), | ||||
|         [ | ||||
|             'Usage: ./usage -x NUM -y NUM', | ||||
|             'You forgot about -y' | ||||
|         ] | ||||
|     ); | ||||
|  | ||||
|     t.same(r.logs, []); | ||||
|     t.ok(r.exit); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('checkCondPass', function (t) { | ||||
|     function checker (argv) { | ||||
|         return 'x' in argv && 'y' in argv; | ||||
|     } | ||||
|  | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('-x 10 -y 20'.split(' ')) | ||||
|             .usage('Usage: $0 -x NUM -y NUM') | ||||
|             .check(checker) | ||||
|             .argv; | ||||
|     }); | ||||
|     t.same(r, { | ||||
|         result : { x : 10, y : 20, _ : [], $0 : './usage' }, | ||||
|         errors : [], | ||||
|         logs : [], | ||||
|         exit : false, | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('checkCondFail', function (t) { | ||||
|     function checker (argv) { | ||||
|         return 'x' in argv && 'y' in argv; | ||||
|     } | ||||
|  | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('-x 10 -z 20'.split(' ')) | ||||
|             .usage('Usage: $0 -x NUM -y NUM') | ||||
|             .check(checker) | ||||
|             .argv; | ||||
|     }); | ||||
|  | ||||
|     t.same( | ||||
|         r.result, | ||||
|         { x : 10, z : 20, _ : [], $0 : './usage' } | ||||
|     ); | ||||
|  | ||||
|     t.same( | ||||
|         r.errors.join('\n').split(/\n+/).join('\n'), | ||||
|         'Usage: ./usage -x NUM -y NUM\n' | ||||
|         + 'Argument check failed: ' + checker.toString() | ||||
|     ); | ||||
|  | ||||
|     t.same(r.logs, []); | ||||
|     t.ok(r.exit); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('countPass', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('1 2 3 --moo'.split(' ')) | ||||
|             .usage('Usage: $0 [x] [y] [z] {OPTIONS}') | ||||
|             .demand(3) | ||||
|             .argv; | ||||
|     }); | ||||
|     t.same(r, { | ||||
|         result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, | ||||
|         errors : [], | ||||
|         logs : [], | ||||
|         exit : false, | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('countFail', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('1 2 --moo'.split(' ')) | ||||
|             .usage('Usage: $0 [x] [y] [z] {OPTIONS}') | ||||
|             .demand(3) | ||||
|             .argv; | ||||
|     }); | ||||
|     t.same( | ||||
|         r.result, | ||||
|         { _ : [ '1', '2' ], moo : true, $0 : './usage' } | ||||
|     ); | ||||
|  | ||||
|     t.same( | ||||
|         r.errors.join('\n').split(/\n+/), | ||||
|         [ | ||||
|             'Usage: ./usage [x] [y] [z] {OPTIONS}', | ||||
|             'Not enough non-option arguments: got 2, need at least 3', | ||||
|         ] | ||||
|     ); | ||||
|  | ||||
|     t.same(r.logs, []); | ||||
|     t.ok(r.exit); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('defaultSingles', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('--foo 50 --baz 70 --powsy'.split(' ')) | ||||
|             .default('foo', 5) | ||||
|             .default('bar', 6) | ||||
|             .default('baz', 7) | ||||
|             .argv | ||||
|         ; | ||||
|     }); | ||||
|     t.same(r.result, { | ||||
|         foo : '50', | ||||
|         bar : 6, | ||||
|         baz : '70', | ||||
|         powsy : true, | ||||
|         _ : [], | ||||
|         $0 : './usage', | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('defaultAliases', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('') | ||||
|             .alias('f', 'foo') | ||||
|             .default('f', 5) | ||||
|             .argv | ||||
|         ; | ||||
|     }); | ||||
|     t.same(r.result, { | ||||
|         f : '5', | ||||
|         foo : '5', | ||||
|         _ : [], | ||||
|         $0 : './usage', | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('defaultHash', function (t) { | ||||
|     var r = checkUsage(function () { | ||||
|         return optimist('--foo 50 --baz 70'.split(' ')) | ||||
|             .default({ foo : 10, bar : 20, quux : 30 }) | ||||
|             .argv | ||||
|         ; | ||||
|     }); | ||||
|     t.same(r.result, { | ||||
|         _ : [], | ||||
|         $0 : './usage', | ||||
|         foo : 50, | ||||
|         baz : 70, | ||||
|         bar : 20, | ||||
|         quux : 30, | ||||
|     }); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| test('rebase', function (t) { | ||||
|     t.equal( | ||||
|         optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), | ||||
|         './foo/bar/baz' | ||||
|     ); | ||||
|     t.equal( | ||||
|         optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), | ||||
|         '../../..' | ||||
|     ); | ||||
|     t.equal( | ||||
|         optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), | ||||
|         '../pow/zoom.txt' | ||||
|     ); | ||||
|     t.end(); | ||||
| }); | ||||
|  | ||||
| function checkUsage (f) { | ||||
|  | ||||
|     var exit = false; | ||||
|  | ||||
|     process._exit = process.exit; | ||||
|     process._env = process.env; | ||||
|     process._argv = process.argv; | ||||
|  | ||||
|     process.exit = function (t) { exit = true }; | ||||
|     process.env = Hash.merge(process.env, { _ : 'node' }); | ||||
|     process.argv = [ './usage' ]; | ||||
|  | ||||
|     var errors = []; | ||||
|     var logs = []; | ||||
|  | ||||
|     console._error = console.error; | ||||
|     console.error = function (msg) { errors.push(msg) }; | ||||
|     console._log = console.log; | ||||
|     console.log = function (msg) { logs.push(msg) }; | ||||
|  | ||||
|     var result = f(); | ||||
|  | ||||
|     process.exit = process._exit; | ||||
|     process.env = process._env; | ||||
|     process.argv = process._argv; | ||||
|  | ||||
|     console.error = console._error; | ||||
|     console.log = console._log; | ||||
|  | ||||
|     return { | ||||
|         errors : errors, | ||||
|         logs : logs, | ||||
|         exit : exit, | ||||
|         result : result, | ||||
|     }; | ||||
| }; | ||||
							
								
								
									
										8
									
								
								node_modules/optimist/test/whitespace.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								node_modules/optimist/test/whitespace.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| var optimist = require('../'); | ||||
| var test = require('tap').test; | ||||
|  | ||||
| test('whitespace should be whitespace' , function (t) { | ||||
|     t.plan(1); | ||||
|     var x = optimist.parse([ '-x', '\t' ]).x; | ||||
|     t.equal(x, '\t'); | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user
	 Shivam Mathur
					Shivam Mathur