askument

1.0.1 • Public • Published

askument

If argument is not present ask for it. Returns a promise.

Install

npm install --save askument

Usage

  • Will ask for missing param 'id':
const params = {}
const promise = askument('id', 'Provide an ID:', params) // asks: Provide an ID:
  • Will ask default question for missing param 'id':
const params = {}
const promise = askument('id', params) // asks: id?
  • Will resolve to existing value without asking:
const params = {id: 'xer389i9ads8'}
const promise = askument('id', 'Provide an ID:', params) // doesn't ask, resolves to 'xer389i9ads8'

Plays well with minimist

askument is a good companion for minimist. See both of them in action:

const args = require('minimist')(process.argv.slice(2))
const askument = require('askument')

// ask for id if not set in arguments, or resolve to provided value when set
askument('id', args).then((id) => {
  console.log(`Provided ID: ${id}`)
})

Resolving multiple arguments

When you want to get multiple arguments you need to ensure they run in series because you can't read from the command line more than once at a time. Luckily for us there's p-series, a good friend of askument, which will help us get each argument in series.

Example:

const promises = [
  () => askument('id', args),
  () => askument('range', args),
  () => askument('title', args)
]

// Ensure we get required arguments resolving promises in series.
series(promises).then((results) => {
  const id = results[0]
  const range = results[1]
  const title = results[2]
  console.log('- Provided ID:', id)
  console.log('- Provided Range:', range)
  console.log('- Provided Title:', title)
})

Why?

I wanted a dead simple way to ensure an argument is provided letting the user input it interactively instead of displaying the typical usage description.

Readme

Keywords

Package Sidebar

Install

npm i askument

Weekly Downloads

1

Version

1.0.1

License

MIT

Last publish

Collaborators

  • codealchemist