Expand description
inquire
is a library for building interactive prompts on terminals.
It provides several different prompts in order to interactively ask the user
for information via the CLI. With inquire
, you can use:
Text
to get text input from the user, with built-in autocompletion support;Editor
* to get longer text inputs by opening a text editor for the user;DateSelect
* to get a date input from the user, selected via an interactive calendar;Select
to ask the user to select one option from a given list;MultiSelect
to ask the user to select an arbitrary number of options from a given list;Confirm
for simple yes/no confirmation prompts;CustomType
for text prompts that you would like to parse to a custom type, such as numbers or UUIDs;Password
for secretive text prompts.
Check out the GitHub repository to see demos of what you can do with inquire
.
Features
- Cross-platform, supporting UNIX and Windows terminals (thanks to crossterm);
- Several kinds of prompts to suit your needs;
- Standardized error handling (thanks to thiserror);
- Support for fine-grained configuration for each prompt type, allowing you to customize:
- Default values;
- Input validators and formatters;
- Help messages;
- Autocompletion for
Text
prompts; - Custom list filters for Select and
MultiSelect
prompts; - Custom parsers for
Confirm
andCustomType
prompts; - Custom extensions for files created by
Editor
prompts; - and many others!
* Date-related features are available by enabling the date
feature.
Simple Example
use inquire::{Text, validator::{StringValidator, Validation}};
fn main() {
let validator = |input: &str| if input.chars().count() > 140 {
Ok(Validation::Invalid("You're only allowed 140 characters.".into()))
} else {
Ok(Validation::Valid)
};
let status = Text::new("What are you thinking about?")
.with_validator(validator)
.prompt();
match status {
Ok(status) => println!("Your status is being published..."),
Err(err) => println!("Error while publishing your status: {}", err),
}
}
Re-exports
pub use crate::autocompletion::Autocomplete;
pub use crate::error::CustomUserError;
pub use crate::error::InquireError;
Modules
- Trait and structs used by prompts to provide autocompletion features.
- Definitions of
inquire
’s error handling - Type aliases and default implementations for functions called as formatters of a given input.
- Utilities used to wrap user selections in Select and
MultiSelect
prompts. - Type aliases and default implementations for parsers called in prompts that need to parse user input, such as Confirm or
CustomType
. - General type aliases.
- UI-related definitions for rendered content.
- Traits and structs used by prompts to validate user input before returning the values to their callers.
Macros
- Shorthand for the built-in
ExactLengthValidator
that checks whether the answer length is equal to the specified value. - Shorthand for the built-in
MaxLengthValidator
that checks whether the answer length is smaller than or equal to the specified threshold. - Shorthand for the built-in
MinLengthValidator
that checks whether the answer length is larger than or equal to the specified threshold. - Built-in parser creator that checks whether the answer is able to be successfully parsed to a given type, such as
f64
. The given type must implement the FromStr trait. - Shorthand for the built-in
ValueRequiredValidator
that checks whether the answer is not empty.
Structs
- Prompt to ask the user for simple yes/no questions, commonly known by asking the user displaying the
(y/n)
text. - Generic prompt suitable for when you need to parse the user input into a specific type, for example an
f64
or arust_decimal
, maybe even anuuid
. - Prompt that allows user to select a date (time not supported) from an interactive calendar. Available via the
date
feature. - This prompt is meant for cases where you need the user to write some text that might not fit in a single line, such as long descriptions or commit messages.
- Prompt suitable for when you need the user to select many options (including none if applicable) among a list of them.
- Prompt meant for secretive text inputs.
- Prompt suitable for when you need the user to select one option among many.
- Standard text prompt that returns the user string input.
Enums
- Display modes of the text input of a password prompt.
Functions
- Acquires a write lock to the global RenderConfig object and updates the inner value with the provided argument.