# Rusty Prompt ### Rusty Prompt is a command line interface builder based off of the go-prompt library. Basic example: ``` Rust use rusty_prompt::{App, Color, CommandState, Completer, Document, Executor, Prompt, PromptBuilder, Suggestion, Writer}; use rusty_prompt::colored_string::{ColoredChar, ColoredString}; pub struct Cli {} impl Completer for Cli { fn get_suggestions(&self, doc: Document) -> Vec { vec![ Suggestion::new("find", "Find something"), Suggestion::new("go", "Go somewhere"), Suggestion::new("die", "kills something"), Suggestion::new("flame", "flames something"), Suggestion::new("Blank_Desc", ""), ] } } impl Executor for Cli { fn execute(&mut self, command: &str, writer: &mut Writer) -> CommandState { writer.write_str(&format!("Command: {}", command)); writer.write_str("\n"); CommandState::Ok } } impl App for Cli {} fn main() { let chr = ColoredChar::builder().ch('>' as u8).foreground_color(Color::Yellow).build(); let prefix = ColoredString::new_from_inner(&[ chr, chr, chr, ColoredChar::builder().ch(' ' as u8).build() ]); let mut prompt: Prompt = PromptBuilder::builder().prefix(prefix).app(Box::new(Cli {})).build().into(); prompt.run(); } ``` Which will output a prompt: ![](photos/2.png) With Completions: ![](photos/1.png) Current keybinds: | Key | Action | |-----------|---------------------------------------------------| | End | Moves cursor to end | | Home | Moves cursor to start | | Delete | Deletes the next char | | Backspace | Deletes the prev char | | Right | Moves cursor to the right | | Left | Moves cursor to the left | | Control+E | Moves cursor to end | | Control+A | Moves cursor to start | | Control+X | Deletes the char after the cursor | | Control+U | Deletes all chars before cursor | | Control+H | Deletes the char before the cursor | | Control+F | Moves cursor to the right | | Control+B | Moves cursor to the left | | Control+W | Removes the chars before the cursor | | Control+L | Clears the current line | | Control+D | Quit | | Control+C | Quit | | Up | Gets the previous history and puts it in the line | | Down | Gets the next history and puts it in the line | | Tab | Completes the line |