Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hashmismatch/terminal_cli.rs
Low-level Rust library for implementing terminal command line interface, like in embedded systems.
https://github.com/hashmismatch/terminal_cli.rs
Last synced: about 1 month ago
JSON representation
Low-level Rust library for implementing terminal command line interface, like in embedded systems.
- Host: GitHub
- URL: https://github.com/hashmismatch/terminal_cli.rs
- Owner: hashmismatch
- Created: 2015-04-07T20:19:27.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2020-12-08T21:42:08.000Z (over 3 years ago)
- Last Synced: 2024-04-02T22:03:51.707Z (2 months ago)
- Language: Rust
- Size: 663 KB
- Stars: 55
- Watchers: 6
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Lists
- awesome-rust - hashmismatch/terminal_cli.rs
- awesome-rust-zh - hashmismatch/terminal_cli.rs - 构建一个交互式命令提示符[<img src="https://api.travis-ci.org/hashmismatch/terminal_cli.rs.svg?branch=master">](https://travis-ci.org/hashmismatch/terminal_cli.rs) (库 / 命令行)
- awesome-rust - hashmismatch/terminal_cli.rs - ci.org/hashmismatch/terminal_cli.rs.svg?branch=master)](https://travis-ci.org/hashmismatch/terminal_cli.rs) (Libraries / Command-line)
- awesome-rust - hashmismatch/terminal_cli.rs - ci.org/hashmismatch/terminal_cli.rs.svg?branch=master">](https://travis-ci.org/hashmismatch/terminal_cli.rs) (库 Libraries / 命令行 Command-line)
- awesome-rust - hashmismatch/terminal_cli.rs - ci.org/hashmismatch/terminal_cli.rs.svg?branch=master">](https://travis-ci.org/hashmismatch/terminal_cli.rs) (Libraries / Command-line)
- awesome-rust-cn - hashmismatch/terminal_cli.rs - ci.org/hashmismatch/terminal_cli.rs.svg?branch=master">](https://travis-ci.org/hashmismatch/terminal_cli.rs) (Libraries / Command-line)
- awesome-rust-cn - hashmismatch/terminal_cli.rs
- awesome-rust - hashmismatch/terminal_cli.rs - ci.org/hashmismatch/terminal_cli.rs.svg?branch=master)](https://travis-ci.org/hashmismatch/terminal_cli.rs) (Libraries / Command-line)
README
## Terminal CLI
Need to build an interactive command prompt, with commands, properties and with full autocomplete? This is for you.
[![Build Status](https://travis-ci.org/hashmismatch/terminal_cli.rs.svg?branch=master)](https://travis-ci.org/hashmismatch/terminal_cli.rs)
[![Documentation](https://docs.rs/terminal_cli/badge.svg)](https://docs.rs/terminal_cli)
## Example, output only (Rust's ```stdout```)
```rust
// 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