Awesome
Requestty
requestty
(request-tty) is an easy-to-use collection of interactive
cli prompts inspired by 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 for more complex workflows
Usage
Add this to your Cargo.toml
[dependencies]
requestty = "0.4.1"
To ask a question:
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 and the examples directory.
In-built prompts
There are 11 in-built prompts:
-
Input
Prompt that takes user input and returns a
<img src="./assets/input.gif" style="max-height: 11rem" />String
. -
Password
Prompt that takes user input and hides it.
<div align="center"> <img src="./assets/password-mask.gif" style="max-width: 45%; max-height: 11rem" /> <img src="./assets/password-hidden.gif" style="max-width: 45%; max-height: 11rem" /> </div> -
Editor
Prompt that takes launches the users preferred editor on a temporary file
<img src="./assets/editor.gif" style="max-height: 30rem" /> -
Confirm
Prompt that returns
<img src="./assets/confirm.gif" style="max-height: 11rem" />true
orfalse
. -
Int
Prompt that takes a
<img src="./assets/int.gif" style="max-height: 11rem" />i64
as input. -
Float
Prompt that takes a
<img src="./assets/float.gif" style="max-height: 11rem" />f64
as input. -
Expand
Prompt that allows the user to select from a list of options by key
<img src="./assets/expand.gif" style="max-height: 15rem" /> -
Select
Prompt that allows the user to select from a list of options
<img src="./assets/select.gif" style="max-height: 15rem" /> -
RawSelect
Prompt that allows the user to select from a list of options with indices
<img src="./assets/raw-select.gif" style="max-height: 15rem" /> -
MultiSelect
Prompt that allows the user to select multiple items from a list of options
<img src="./assets/multi-select.gif" style="max-height: 20rem" /> -
OrderSelect
Prompt that allows the user to organize a list of options.
<img src="./assets/order-select.gif" style="max-height: 20rem" />
Optional features
-
macros
: Enabling this feature will allow you to use thequestions
andprompt_module
macros. -
smallvec
(default): Enabling this feature will useSmallVec
instead ofVec
for auto completions. This allows inlining single completions. -
crossterm
(default): Enabling this feature will use thecrossterm
library for terminal interactions such as drawing and receiving events. -
termion
: Enabling this feature will use thetermion
library for terminal interactions such as drawing and receiving events.
Minimum Supported Rust Version (MSRV)
Minimum supported rust version (as per
cargo-msrv) is 1.56.1