promkit icon indicating copy to clipboard operation
promkit copied to clipboard

A toolkit for building interactive prompt in Rust

promkit

.github/workflows/promkit.yml docs.rs

A toolkit for building your own interactive command-line tools in Rust, utilizing crossterm.

Getting Started

Put the package in your Cargo.toml.

[dependencies]
version = "0.1.2"

Features

  • Applications
    • Readline: provide the lines to receive and display user inputs
      • Masking
      • Switch insert/overwrite modes
      • Suggestions
    • Select: provide the selectbox to choose the items from
      • Move cyclically in the selectbox
  • Customizations
    • Edit key-bindings
    • Edit crossterm Event handler
    • Define your own command-line applications

Examples

Readline:

readline

use promkit::{build::Builder, readline, Result};

fn main() -> Result<()> {
    let mut p = readline::Builder::default().build()?;
    loop {
        let line = p.run()?;
        println!("result: {:?}", line);
    }
}

Select:

select

use promkit::{
    build::Builder, crossterm::style, register::Register, select, selectbox::SelectBox, Result,
};

fn main() -> Result<()> {
    let mut selectbox = Box::new(SelectBox::default());
    selectbox.register_all((0..100).map(|v| v.to_string()).collect::<Vec<String>>());
    let mut p = select::Builder::default()
        .title("Q: What number do you like?")
        .title_color(style::Color::DarkGreen)
        .selectbox(selectbox)
        .build()?;
    let line = p.run()?;
    println!("result: {:?}", line);
    Ok(())
}