Crates.io | terminal_cli |
lib.rs | terminal_cli |
version | 0.2.0 |
source | src |
created_at | 2015-04-07 20:53:16.055391 |
updated_at | 2018-01-19 22:33:47.738364 |
description | A standalone library with no-std support for command line terminal interfaces. With autocomplete support, helpers for commands and properties and a prompt implementation. |
homepage | https://github.com/hashmismatch/terminal_cli.rs |
repository | https://github.com/hashmismatch/terminal_cli.rs |
max_upload_size | |
id | 1810 |
size | 46,230 |
Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you.
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