#[macro_use] extern crate elog; extern crate ecla; use ecla::App; const HELP: &'static str = " ecla, easily build command line apps. Usage: ecla command ecla flag ecla value Commands: command Test sub command. flag Test flag parsing. value Test sub command value parsing. Command Options: flag -f, --force force to run flag command. -a, --all run flag command for all files. Options: --help Show help. --version Show version. "; const VERSION: &'static str = "0.1.0"; fn main() { let app = App::new(HELP, VERSION); if let Some(_) = app.get_command("command") { command(); } else if let Some(command) = app.get_command("flag") { let flag = command.get_flag(&["-f", "--force"]); if flag.is_some() { command_with_flag(flag.unwrap().get_value()); } else { command_with_no_flag(); } } else if let Some(command) = app.get_command("value") { command_with_value(command.get_value()); } else { app.show_unknown_or_help(); } } fn command() { infos!("Wow! You have run command!"); } fn command_with_flag(_: Option) { infos!("Wow! You have run command with flag!"); } fn command_with_no_flag() { errors!("Oops! You have run command with no flag!"); } fn command_with_value(value: Option) { infos!("Wow! You have run command with value: {:?}", value); }