main.rs
42 lines
| 1.1 KiB
| application/rls-services+xml
|
RustLexer
Antoine Cezar
|
r45593 | use clap::App; | ||
use clap::AppSettings; | ||||
use clap::SubCommand; | ||||
Antoine Cezar
|
r45515 | mod commands; | ||
mod error; | ||||
Antoine Cezar
|
r45503 | mod exitcode; | ||
Antoine Cezar
|
r45592 | mod ui; | ||
Antoine Cezar
|
r45593 | use commands::Command; | ||
Antoine Cezar
|
r45503 | |||
fn main() { | ||||
Antoine Cezar
|
r45593 | let mut app = App::new("rhg") | ||
.setting(AppSettings::AllowInvalidUtf8) | ||||
.setting(AppSettings::SubcommandRequired) | ||||
.setting(AppSettings::VersionlessSubcommands) | ||||
.version("0.0.1") | ||||
.subcommand( | ||||
SubCommand::with_name("root").about(commands::root::HELP_TEXT), | ||||
); | ||||
let matches = app.clone().get_matches_safe().unwrap_or_else(|_| { | ||||
std::process::exit(exitcode::UNIMPLEMENTED_COMMAND) | ||||
}); | ||||
let command_result = match matches.subcommand_name() { | ||||
Some(name) => match name { | ||||
"root" => commands::root::RootCommand::new().run(), | ||||
_ => std::process::exit(exitcode::UNIMPLEMENTED_COMMAND), | ||||
}, | ||||
_ => { | ||||
match app.print_help() { | ||||
Ok(_) => std::process::exit(exitcode::OK), | ||||
Err(_) => std::process::exit(exitcode::ABORT), | ||||
}; | ||||
} | ||||
}; | ||||
match command_result { | ||||
Ok(_) => std::process::exit(exitcode::OK), | ||||
Err(e) => e.exit(), | ||||
} | ||||
Antoine Cezar
|
r45503 | } | ||