Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eddywashere/yargs-promise
Use the headless yargs parser with promises!
https://github.com/eddywashere/yargs-promise
Last synced: 10 days ago
JSON representation
Use the headless yargs parser with promises!
- Host: GitHub
- URL: https://github.com/eddywashere/yargs-promise
- Owner: eddywashere
- License: mit
- Created: 2017-04-25T20:41:22.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-12T06:39:18.000Z (almost 2 years ago)
- Last Synced: 2024-10-14T10:23:03.019Z (24 days ago)
- Language: JavaScript
- Size: 208 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# yargs-promise
Use the headless yargs parser with promises!
## Install
npm
```
npm install --save yargs-promise
```yarn
```
yarn add --save yargs-promise
```## Usage
Instead of using a callback with [yargs.parse](http://yargs.js.org/docs/#methods-parseargs-context-parsecallback), use a promise chain: `parser.parse(text).then().catch()`.
Examples:
```js
const yargs = require('yargs');
const YargsPromise = require('yargs-promise');// create the customized yargs parser
const parser = new YargsPromise(yargs);// setup command & command handler
parser
.command('hello ', 'hello world parser' , ()=>{}, (argv) => {// resolve a promise or other value
argv.resolve(doSomething);// reject stuff
argv.reject(yourErrorData);// or do nothing and reject/resolve will be handled internally
console.log('testing argv');
})
.help();// parse text input and use the returned promise
parser.parse('hello world')
.then(({data, argv}) => {
// data is what your code resolved or what an internal command resolved
})
.catch(({error, argv}) => {
// `error` is what your code rejected or an internal error from yargs
});```
Customizing context example
```js
const yargs = require('yargs');
const YargsPromise = require('yargs-promise');const parser = new YargsPromise(
yargs,
// customize context
{
customContextMethod: () => {},
foo: 'bar'
}
);parser
.command('hello ', 'hello world parser' , ()=>{}, (argv) => {
// argv now contains
argv.customContextMethod();
console.log(argv.foo);
})
.help();
```Need access to yargs object? Work with the direct `yargs` object prior to passing it into the yargs-promise constructor. For convenience, it is also available at `parser.yargs`.
### How it works
This library does three things:
- wraps the yargs.parse in a new Promise
- no more callbacks
- attaches that Promises `resolve` & `reject` methods on the context passed to yargs.parse
- this enables you to call `argv.resolve` or `argv.reject` in command handler function
- handles default behavior
- from Error validation
- output from internal commands like `.help()`
- unhandled output from custom handlerCheckout the source code or tests for more information.
### Why
Building chatbots requires parsing and handling text input. This wraps up the most common needs I've come across for handling errors, simple commands, and commands with handlers.