Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Lutetium-Vanadium/requestty

An easy-to-use collection of interactive cli prompts inspired by Inquirer.js.
https://github.com/Lutetium-Vanadium/requestty

cli command-line inquirer interactive prompt rust terminal

Last synced: 2 months ago
JSON representation

An easy-to-use collection of interactive cli prompts inspired by Inquirer.js.

Awesome Lists containing this project

README

        

# Requestty

![RustCI](https://github.com/Lutetium-Vanadium/requestty/workflows/Default/badge.svg)
![RustCI](https://github.com/Lutetium-Vanadium/requestty/workflows/Crossterm/badge.svg)
![RustCI](https://github.com/Lutetium-Vanadium/requestty/workflows/Termion/badge.svg)
[![Crates.io](https://img.shields.io/crates/v/requestty.svg)](https://crates.io/crates/requestty)
[![License](https://img.shields.io/crates/l/requestty.svg)](./LICENSE)
[![Documentation](https://docs.rs/requestty/badge.svg)](https://docs.rs/requestty)

`requestty` (request-tty) is an easy-to-use collection of interactive
cli prompts inspired by [Inquirer.js](https://github.com/SBoudrias/Inquirer.js).

- Easy-to-use - The builder API and macros allow you to easily configure
and use the in-built prompts.

- Extensible - Easily create and use custom prompts with a companion
ui rendering library.

- Flexible - All prompts can be used standalone or chained together.

- Dynamic - You can dynamically decide what questions should be asked
based on previous questions.

- Validation - You can validate user input with any prompt.

- Examples - Every prompt is accompanied with an example as well as other
[examples](./examples) for more complex workflows

## Usage

Add this to your `Cargo.toml`

```toml
[dependencies]
requestty = "0.4.1"
```

To ask a question:

```rust
let question = requestty::Question::expand("overwrite")
.message("Conflict on `file.rs`")
.choices(vec![
('y', "Overwrite"),
('a', "Overwrite this one and all next"),
('d', "Show diff"),
])
.default_separator()
.choice('x', "Abort")
.build();

println!("{:#?}", requestty::prompt_one(question));
```

More examples are available in the [documentation](https://docs.rs/requestty)
and the [examples](https://github.com/Lutetium-Vanadium/requestty/tree/master/examples)
directory.

## In-built prompts

There are 11 in-built prompts:

- ### Input

Prompt that takes user input and returns a `String`.

- ### Password

Prompt that takes user input and hides it.




- ### Editor

Prompt that takes launches the users preferred editor on a temporary
file

- ### Confirm

Prompt that returns `true` or `false`.

- ### Int

Prompt that takes a `i64` as input.

- ### Float

Prompt that takes a `f64` as input.

- ### Expand

Prompt that allows the user to select from a list of options by key

- ### Select

Prompt that allows the user to select from a list of options

- ### RawSelect

Prompt that allows the user to select from a list of options with
indices

- ### MultiSelect

Prompt that allows the user to select multiple items from a list of
options

- ### OrderSelect

Prompt that allows the user to organize a list of options.

## Optional features

- `macros`: Enabling this feature will allow you to use the `questions`
and `prompt_module` macros.

- `smallvec` (default): Enabling this feature will use
[`SmallVec`](https://docs.rs/smallvec/latest/smallvec/struct.SmallVec.html)
instead of `Vec` for auto completions. This allows inlining single
completions.

- `crossterm` (default): Enabling this feature will use the
[`crossterm`](https://crates.io/crates/crossterm) library for terminal
interactions such as drawing and receiving events.

- `termion`: Enabling this feature will use the
[`termion`](https://crates.io/crates/termion) library for terminal
interactions such as drawing and receiving events.

## Minimum Supported Rust Version (MSRV)

Minimum supported rust version (as per
[cargo-msrv](https://crates.io/crates/cargo-msrv)) is `1.56.1`