prompt-skeleton
v1.0.4
Published
A consistent behavior for CLI prompts.
Downloads
13,340
Maintainers
Readme
prompt-skeleton
This project aims to bring a consistent behavior to CLI apps.
Use cli-prompter
if you want to have batteries included or if you want to chain prompts.
Instead of letting prompts parse user input by themselves, prompt-skeleton provides a standard set of actions like submit
, which prompts can act on by exposing methods. The key bindings are readline-inspired.
Projects using prompt-skeleton
Prompts:
sms-cli
date-prompt
mail-prompt
multiselect-prompt
number-prompt
range-prompt
select-prompt
text-prompt
tree-select-prompt
cli-autocomplete
switch-prompt
Other command line interfaces:
Installing
npm install prompt-skeleton
Usage
wrap(prompt) // Promise
To render to screen, write
to prompt.out
. Because prompt.out
is a ansi-diff-stream
, you can also clear the screen manually be calling prompt.out.clear()
.
Actions
You can process any of these actions by exposing a method prompt[action]
.
first
/last
– move to the first/last letter/digitleft
/right
up
/down
next
- for tabbingdelete
– remove letter/digit left to the cursorspace
submit
– success, close the promptabort
– failure, close the promptreset
Example
This renders a prompt that lets you pick a number.
const wrap = require('prompt-skeleton')
const prompt = wrap({
value: 0,
up: function () {
this.value++
this.render()
},
down: function () {
this.value--
this.render()
},
render: function () {
this.out.write(`The value is ${this.value}.`)
}
})
prompt
.then((val) => {
// prompt succeeded, do something with the value
})
.catch((val) => {
// prompt aborted, do something with the value
})
Contributing
If you have a question, found a bug or want to propose a feature, have a look at the issues page.