Crates.io | simpleshell |
lib.rs | simpleshell |
version | 0.1.0 |
source | src |
created_at | 2022-01-20 17:22:44.785259 |
updated_at | 2022-01-20 17:22:44.785259 |
description | A crate that provides a simple interface for executing commands from the user. |
homepage | https://github.com/mkapra/simpleshell |
repository | https://github.com/mkapra/simpleshell |
max_upload_size | |
id | 517757 |
size | 7,138 |
A crate that provides a simple interface for executing commands from the user.
use simple_shell::{Shell, Command, CommandError};
use ansi_term::{Color, Style};
fn version(_: &[String], _: &[Command]) -> Result<(), CommandError> {
println!("v0.1.0");
Ok(())
}
fn help(_: &[String], commands: &[Command]) -> Result<(), CommandError> {
println!("{}", Color::Blue.paint("HELP"));
commands.iter().for_each(|c| println!("{}: {}", Style::new().bold().paint(&c.name), c.description));
Ok(())
}
let commands = vec![
Command {
name: "version".to_owned(),
description: "Returns the version of the software".to_owned(),
exec: Box::new(version),
},
Command {
name: "help".to_owned(),
description: "Prints out this help".to_owned(),
exec: Box::new(help),
},
];
let shell = Shell::new(None, commands);
loop {
if let Err(e) = shell.process(){
eprintln!("{}", e);
}
}
Results in:
$ shell> version
v0.1.0