Skip to content
/ cli-rs Public

A small library for writing line-oriented command interpreters in the rust

Notifications You must be signed in to change notification settings

raminfp/cli-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

cli-rs

What is line-oriented command interpreters?

A line-oriented command interpreter, also known as a command-line interpreter or shell, is a software program or interface that allows users to interact with a computer or operating system by entering text-based commands. Users type commands and arguments in a sequential, line-by-line manner, and the interpreter processes these commands and carries out the requested operations.

Example

use std::cell::RefCell;
use std::rc::Rc;
use cli_rs::cli::cmd::CommandHandler;
use cli_rs::cli::cmd::Cmd;
use cli_rs::about;
use cli_rs::hello;

struct QuitCommand;
struct HelpCommand;

impl CommandHandler for HelpCommand {
    fn execute(&self, _cmd: Rc<RefCell<Cmd>>, _args: String) {
        println!("Help");
    }
}

impl CommandHandler for QuitCommand {
    fn execute(&self, _cmd: Rc<RefCell<Cmd>>, _args: String) {
        std::process::exit(0);
    }
}

fn main() {
    let mut cmd = Cmd::new();
    cmd.intro = Some("Welcome to Rust command interpreter!".to_string());

    cmd.add_command("hello", Rc::new(hello::HelloCommand));
    cmd.add_command("quit", Rc::new(QuitCommand));
    cmd.add_command("help", Rc::new(HelpCommand));
    cmd.add_command("about", Rc::new(about::AboutCommand));

    cmd.cmdloop();
}

Output

# cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.03s
     Running `target/debug/cli-rs`
Welcome to Rust command interpreter!
[cli-rs] help
Help
[cli-rs] hello world! 
Hello world!
[cli-rs] about
About me
[cli-rs] quit

About

A small library for writing line-oriented command interpreters in the rust

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages