Expand description
Cargo style subcommand
This library help to build an app that use a similar command line interface as Cargo or Git.
§Example
The following example show a simple program with two subcommand:
cargo build
cargo clean
extern crate subcmd;
use subcmd::CmdHandler;
use subcmd::Command;
struct CmdBuild;
impl Command for CmdBuild {
fn name<'a>(&self) -> &'a str {"build"}
fn help<'a>(&self) -> &'a str {"Usage: cargo build [options]"}
fn description<'a>(&self) -> &'a str { "Compile the current project" }
fn run(&self, argv: &Vec<String>) {
println!("I'm building your files");
}
}
struct CmdClean;
impl Command for CmdClean {
fn name<'a>(&self) -> &'a str {"clean"}
fn help<'a>(&self) -> &'a str {"Usage: cargo clean [options]"}
fn description<'a>(&self) -> &'a str { "Remove the target directory" }
fn run(&self, argv: &Vec<String>) {
println!("I'm cleaning your files");
}
}
fn main() {
let mut handler = CmdHandler::new();
handler.add(Box::new(CmdBuild));
handler.add(Box::new(CmdClean));
handler.run();
}
Structs§
- CmdHandler
- Command line parser and subcommand runner
- CmdWrapper
- This wrapper hold a command object and a arguments vectors.
- Message
- A Message to be printed
Enums§
- CmdResult
- Result of a CmdHandler::run
Traits§
- Command
- This trait must be implemented for each subcommand