repl-rs

Library to help you create a REPL for your application.

Basic example code:

```rust use std::collections::HashMap; use replrs::{Command, Error, Parameter, Result, Value}; use replrs::{Convert, Repl};

// Add two numbers. fn add(args: HashMap, _context: &mut T) -> Result> { let first: i32 = args["first"].convert()?; let second: i32 = args["second"].convert()?;

Ok(Some((first + second).to_string()))

}

// Write "Hello" fn hello(args: HashMap, _context: &mut T) -> Result> { Ok(Some(format!("Hello, {}", args["who"]))) }

fn main() -> Result<()> { let mut repl = Repl::new(()) .withname("MyApp") .withversion("v0.1.0") .withdescription("My very cool app") .addcommand( Command::new("add", add) .withparameter(Parameter::new("first").setrequired(true)?)? .withparameter(Parameter::new("second").setrequired(true)?)? .withhelp("Add two numbers together"), ) .addcommand( Command::new("hello", hello) .withparameter(Parameter::new("who").setrequired(true)?)? .with_help("Greetings!"), ); repl.run() } ```

Running the example above:

```bash % my_app Welcome to MyApp v0.1.0 MyApp> help

MyApp v0.1.0: My very cool app

add - Add two numbers together hello - Greetings! MyApp> help add add: Add two numbers together Usage: add first second MyApp> add 1 2 3 MyApp> ```