Crate cli_prompts

Source
Expand description

§Interactive CLI prompts in Rust

Create interactive input prompts like in GitHub’s CLI tool.

§Features

  • Cross-platform;
  • Only one dependency - crossterm;
  • 4 prompts out of the box:
    • Normal input field. Supports input validation and default values;
    • Confirmation y/n;
    • Selection from the list of options;
    • Multiselection.
  • Customization of the colors and text style of the prompts;
  • Set of traits and helper structs that allows to implement custom prompts for your application;

§Getting started

    use cli_prompts::{
        prompts::{Input, AbortReason},
        DisplayPrompt
    };
 
    fn show_input_prompt() {
      let name : Result<String, AbortReason> = Input::new("Enter your name", name_validation)
          .default_value("John")
          .help_message("Please provide your real name")
          .display();
 
      match name {
          Ok(n) => println!("The name is {}", n),
          Err(abort_reason) => println!("Input was aborted because of {:?}", abort_reason),
      }
    }
 
    fn name_validation(name: &str) -> Result<String, String> {
      if name.len() > 0 {
          Ok(name.to_string())
      } else {
          Err("Name must not be empty".into())
      }
    }
 

§License

This project, cli_prompts is licensed under the MIT License

Re-exports§

pub use prompts::DisplayPrompt;

Modules§

engine
This module helps to abstract away the rendering of the prompts to the terminal.
input
Module for handling input
prompts
The module that contains the high-level abstractions for the prompts.
style
Module for changing the appearence of the prompts. Each prompt has its own set of styling attributes, which include text color, different formatting as well as some prompt-specific styling