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

Modules

  • This module helps to abstract away the rendering of the prompts to the terminal.
  • Module for handling input
  • The module that contains the high-level abstractions for the prompts.
  • 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