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 auto-completion 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;
- Auto-completion 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::error::CustomUserError;
pub use crate::error::InquireError;
Modules
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 a rust_decimal
, maybe even an uuid
.
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.