curious-cli

1.1.1 • Public • Published

Curious

Curious is a tiny library for asking for user input without the hassle of opening readline and avoids callback hell by asking for input declaratively.

npm install curious-cli

Examples

Package initialization

const semver = require('semver')
 
let config = await curious.askObject({
  name: {
    description: "Name",
    required: true,
    validate: (val) => val.match(/[a-z0-9-]+/) != -1
  },
  version: {
    description: "Version",
    defaultValue: "1.0.0",
    validate: semver.valid
  },
  desription: {
    description: "Description"
  },
  repository: {
    description: "Repository",
  }
})

Terminal output:

Name: 
Description:
Version [1.0.0]: 
Repository: 

Result:

{ name: "foobar", 
  description: "Foobar is the most awesome package you will ever see.",
  version: "1.0.0",
  repository: "http://github.com/foobarjs/foobar" }

Ask for some URLs

let urls = await curious.askList("Enter a URL: ", {
  value: {
    required: true
  },
  terminator: '.' // implicit
})
console.log(urls)

API

All functions return a promise that resolves to the validated value the user entered.

curious.askElement(question, array, prettyfier?)

Let the user pick an element out of the given array, using the optionally specified prettyfier to pretty-print the elements.

curious.askValue(definition)

Ask the user for a single primitive value. definition is an object with the following attributes:

  • description: text to display required
  • required: are empty values allowed? default: false
  • validate: extra predicate for checking validity of input

curious.askObject(description)

Ask the user for a JavaScript object. The description is an object mapping keys to type definitions as seen in curious.askValue.

curious.askList(description)

Ask the user for several values of the same type.

⚠️ This method is currently not working as described.

  • terminator: value to enter to terminate the list default .
  • value: a type definition as described in curious.askValue.

curious.confirm(question)

Confirm a certain action, with question being the text that is displayed. A boolean value indicates if the user confirmed (true) or unconfirmed (false).

Support

If you found a bug or want an extra feature please open an issue on GitHub.

Package Sidebar

Install

npm i curious-cli

Weekly Downloads

7

Version

1.1.1

License

MIT

Last publish

Collaborators

  • samvv