diff options
Diffstat (limited to 'node_modules/meow')
-rw-r--r-- | node_modules/meow/index.js | 82 | ||||
-rw-r--r-- | node_modules/meow/license | 21 | ||||
-rw-r--r-- | node_modules/meow/package.json | 58 | ||||
-rw-r--r-- | node_modules/meow/readme.md | 159 |
4 files changed, 320 insertions, 0 deletions
diff --git a/node_modules/meow/index.js b/node_modules/meow/index.js new file mode 100644 index 0000000..d7ab879 --- /dev/null +++ b/node_modules/meow/index.js @@ -0,0 +1,82 @@ +'use strict'; +var path = require('path'); +var minimist = require('minimist'); +var objectAssign = require('object-assign'); +var camelcaseKeys = require('camelcase-keys'); +var decamelize = require('decamelize'); +var mapObj = require('map-obj'); +var trimNewlines = require('trim-newlines'); +var redent = require('redent'); +var readPkgUp = require('read-pkg-up'); +var loudRejection = require('loud-rejection'); +var normalizePackageData = require('normalize-package-data'); + +// get the uncached parent +delete require.cache[__filename]; +var parentDir = path.dirname(module.parent.filename); + +module.exports = function (opts, minimistOpts) { + loudRejection(); + + if (Array.isArray(opts) || typeof opts === 'string') { + opts = {help: opts}; + } + + opts = objectAssign({ + pkg: readPkgUp.sync({ + cwd: parentDir, + normalize: false + }).pkg, + argv: process.argv.slice(2) + }, opts); + + minimistOpts = objectAssign({}, minimistOpts); + + minimistOpts.default = mapObj(minimistOpts.default || {}, function (key, value) { + return [decamelize(key, '-'), value]; + }); + + 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 = redent(trimNewlines(opts.help || ''), 2); + + normalizePackageData(pkg); + + process.title = pkg.bin ? Object.keys(pkg.bin)[0] : pkg.name; + + var description = opts.description; + if (!description && description !== false) { + description = pkg.description; + } + + help = (description ? '\n ' + description + '\n' : '') + (help ? '\n' + help : '\n'); + + var showHelp = function (code) { + console.log(help); + process.exit(code || 0); + }; + + 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 + }; +}; diff --git a/node_modules/meow/license b/node_modules/meow/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/node_modules/meow/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) + +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. diff --git a/node_modules/meow/package.json b/node_modules/meow/package.json new file mode 100644 index 0000000..2750de4 --- /dev/null +++ b/node_modules/meow/package.json @@ -0,0 +1,58 @@ +{ + "name": "meow", + "version": "3.7.0", + "description": "CLI app helper", + "license": "MIT", + "repository": "sindresorhus/meow", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js" + ], + "keywords": [ + "cli", + "bin", + "util", + "utility", + "helper", + "argv", + "command", + "line", + "meow", + "cat", + "kitten", + "parser", + "option", + "flags", + "input", + "cmd", + "console" + ], + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "devDependencies": { + "ava": "*", + "execa": "^0.1.1", + "indent-string": "^2.1.0", + "xo": "*" + } +} diff --git a/node_modules/meow/readme.md b/node_modules/meow/readme.md new file mode 100644 index 0000000..253380d --- /dev/null +++ b/node_modules/meow/readme.md @@ -0,0 +1,159 @@ +# meow [](https://travis-ci.org/sindresorhus/meow) + +> CLI app helper + + + + +## Features + +- Parses arguments using [minimist](https://github.com/substack/minimist) +- Converts flags to [camelCase](https://github.com/sindresorhus/camelcase) +- Outputs version when `--version` +- Outputs description and supplied help text when `--help` +- Makes unhandled rejected promises [fail loudly](https://github.com/sindresorhus/loud-rejection) instead of the default silent fail +- Sets the process title to the binary name defined in package.json + + +## Install + +``` +$ npm install --save meow +``` + + +## Usage + +``` +$ ./foo-app.js unicorns --rainbow-cake +``` + +```js +#!/usr/bin/env node +'use strict'; +const meow = require('meow'); +const foo = require('./'); + +const cli = meow(` + Usage + $ foo <input> + + Options + -r, --rainbow Include a rainbow + + Examples + $ foo unicorns --rainbow + 🌈 unicorns 🌈 +`, { + alias: { + r: 'rainbow' + } +}); +/* +{ + input: ['unicorns'], + flags: {rainbow: true}, + ... +} +*/ + +foo(cli.input[0], cli.flags); +``` + + +## API + +### meow(options, [minimistOptions]) + +Returns an object with: + +- `input` *(array)* - Non-flag arguments +- `flags` *(object)* - Flags converted to camelCase +- `pkg` *(object)* - The `package.json` object +- `help` *(object)* - The help text used with `--help` +- `showHelp([code=0])` *(function)* - Show the help text and exit with `code` + +#### options + +Type: `object`, `array`, `string` + +Can either be a string/array that is the `help` or an options object. + +##### description + +Type: `string`, `boolean` +Default: The package.json `"description"` property + +A description to show above the help text. + +Set it to `false` to disable it altogether. + +##### help + +Type: `string`, `boolean` + +The help text you want shown. + +The input is reindented and starting/ending newlines are trimmed which means you can use a [template literal](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/template_strings) without having to care about using the correct amount of indent. + +<del>If it's an array each item will be a line.</del> +*(Still supported, but you should use a template literal instead.)* + +The description will be shown above your help text automatically. + +Set it to `false` to disable it altogether. + +##### version + +Type: `string`, `boolean` +Default: The package.json `"version"` property + +Set a custom version output. + +Set it to `false` to disable it altogether. + +##### pkg + +Type: `string`, `object` +Default: Closest package.json upwards + +Relative path to package.json or as an object. + +##### argv + +Type: `array` +Default: `process.argv.slice(2)` + +Custom arguments object. + +#### minimistOptions + +Type: `object` +Default: `{}` + +Minimist [options](https://github.com/substack/minimist#var-argv--parseargsargs-opts). + +Keys passed to the minimist `default` option are [decamelized](https://github.com/sindresorhus/decamelize), so you can for example pass in `fooBar: 'baz'` and have it be the default for the `--foo-bar` flag. + + +## Promises + +Meow will make unhandled rejected promises [fail loudly](https://github.com/sindresorhus/loud-rejection) instead of the default silent fail. Meaning you don't have to manually `.catch()` promises used in your CLI. + + +## Tips + +See [`chalk`](https://github.com/chalk/chalk) if you want to colorize the terminal output. + +See [`get-stdin`](https://github.com/sindresorhus/get-stdin) if you want to accept input from stdin. + +See [`update-notifier`](https://github.com/yeoman/update-notifier) if you want update notifications. + +See [`configstore`](https://github.com/yeoman/configstore) if you need to persist some data. + +[More useful CLI utilities.](https://github.com/sindresorhus/awesome-nodejs#command-line-utilities) + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) |