Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/Lutetium-Vanadium/requestty
- Owner: Lutetium-Vanadium
- License: mit
- Created: 2021-05-01T12:13:37.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-09-23T08:16:54.000Z (over 1 year ago)
- Last Synced: 2024-08-28T09:51:09.542Z (5 months ago)
- Topics: cli, command-line, inquirer, interactive, prompt, rust, terminal
- Language: Rust
- Homepage:
- Size: 2.9 MB
- Stars: 200
- Watchers: 2
- Forks: 6
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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`