washtubs / prompt-skeleton

A consistent behavior for CLI prompts.

Home Page:https://github.com/derhuerst/prompt-skeleton

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

npm version dependency status ISC-licensed support me via GitHub Sponsors chat with me on Twitter

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:

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/digit
  • left/right
  • up/down
  • next - for tabbing
  • delete – remove letter/digit left to the cursor
  • space
  • submit – success, close the prompt
  • abort – failure, close the prompt
  • reset

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.

About

A consistent behavior for CLI prompts.

https://github.com/derhuerst/prompt-skeleton

License:ISC License


Languages

Language:JavaScript 100.0%