#prompt

cli-prompts

Interactive prompts for the command line

1 unstable release

0.1.0 May 30, 2023

#142 in #prompt

MIT license

410KB
1.5K SLoC

Interactive CLI prompts in Rust

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

presentation

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

More elaborate examples can be found in the examples directory

    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 - see the LICENSE file for details.

Dependencies

~1–12MB
~72K SLoC