Low-level Rust library for implementing terminal command line interface, like in embedded systems.
Switch branches/tags
Clone or download
Latest commit 883a9be Jan 21, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cli_core some packaging updates Jan 19, 2018
cli_termion published versions Jan 19, 2018
examples split Oct 23, 2017
.gitignore split Oct 23, 2017
.travis.yml Reworked the API to perform all command prompt operations directly wi… May 29, 2017
Cargo.toml published versions Jan 19, 2018
README.md less headers Jan 19, 2018

README.md

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