12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 'use strict';
- var path = require('path');
- var minimist = require('minimist');
- var indentString = require('indent-string');
- var objectAssign = require('object-assign');
- var camelcaseKeys = require('camelcase-keys');
- // needed to get the uncached parent
- delete require.cache[__filename];
- var parentDir = path.dirname(module.parent.filename);
- module.exports = function (opts, minimistOpts) {
- opts = objectAssign({
- pkg: './package.json',
- argv: process.argv.slice(2)
- }, opts);
- if (Array.isArray(opts.help)) {
- opts.help = opts.help.join('\n');
- }
- var pkg = typeof opts.pkg === 'string' ? require(path.join(parentDir, opts.pkg)) : opts.pkg;
- var argv = minimist(opts.argv, minimistOpts);
- var help = '\n' + indentString(pkg.description + (opts.help ? '\n\n' + opts.help : '\n'), ' ');
- var showHelp = function () {
- console.log(help);
- process.exit();
- };
- if (argv.version && opts.version !== false) {
- console.log(typeof opts.version === 'string' ? opts.version : pkg.version);
- process.exit();
- }
- if (argv.help && opts.help !== false) {
- showHelp();
- }
- var _ = argv._;
- delete argv._;
- return {
- input: _,
- flags: camelcaseKeys(argv),
- pkg: pkg,
- help: help,
- showHelp: showHelp
- };
- };
|