terminal_cli

Crates.ioterminal_cli
lib.rsterminal_cli
version0.2.0
sourcesrc
created_at2015-04-07 20:53:16.055391
updated_at2018-01-19 22:33:47.738364
descriptionA standalone library with no-std support for command line terminal interfaces. With autocomplete support, helpers for commands and properties and a prompt implementation.
homepagehttps://github.com/hashmismatch/terminal_cli.rs
repositoryhttps://github.com/hashmismatch/terminal_cli.rs
max_upload_size
id1810
size46,230
OK Lab Schleswig-Flensburg (github:nucleon-ev:ok-lab-schleswig-flensburg)

documentation

http://hashmismatch.github.io/terminal_cli.rs/

README

Terminal CLI

Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you.

Build Status

Documentation

Example, output only (Rust's stdout)


// Simple ranged integer property
let mut num1 = 1;

// Rust stdout terminal
let mut terminal = StdoutTerminal;

let options = PromptBufferOptions { echo: true, ..Default::default() };
let mut prompt = PromptBuffer::new(options);

let input_keys = [Key::Character('h' as u8), Key::Character('e' as u8), Key::Character('l' as u8),
                  Key::Character('p' as u8), Key::Newline];

for key in &input_keys {
    let p = prompt.handle_key(*key, &mut terminal, |mut m| {
        if let Some(mut ctx) = m.command("help") {
            ctx.get_terminal().print_line("Help!");
        }

        // Provides "num1/get" and "num1/set", with input validation
        if let Some(mut ctx) = m.property("num1", validate_property_min_max(1, 100)) {
            ctx.apply(&mut num1);
        }
    });

    if let PromptEvent::Break = p {
        break;
    }
}

License: MIT/Apache-2.0

Commit count: 39

cargo fmt