curious-cli
v1.1.1
Published
Ask user for input from the command-line declaratively
Downloads
11
Maintainers
Readme
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.
:warning: 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.