imag/imag-store/src/main.rs

70 lines
1.7 KiB
Rust
Raw Normal View History

2016-01-23 14:38:14 +00:00
extern crate clap;
#[macro_use] extern crate log;
extern crate toml;
#[macro_use] extern crate version;
extern crate libimagrt;
extern crate libimagstore;
extern crate libimagutil;
2016-01-23 15:29:04 +00:00
use libimagrt::runtime::Runtime;
use std::process::exit;
2016-01-23 15:01:17 +00:00
mod ui;
2016-01-23 15:29:04 +00:00
mod create;
mod read;
mod update;
mod delete;
2016-01-23 15:01:17 +00:00
use ui::build_ui;
2016-01-23 15:29:04 +00:00
use create::create;
use read::read;
use update::update;
use delete::delete;
2016-01-23 15:01:17 +00:00
2016-01-23 14:35:31 +00:00
fn main() {
2016-01-23 15:29:04 +00:00
let name = "imag-store";
let version = &version!()[..];
let about = "Direct interface to the store. Use with great care!";
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
let rt = {
let rt = Runtime::new(ui);
if rt.is_ok() {
rt.unwrap()
} else {
println!("Could not set up Runtime");
println!("{:?}", rt.err().unwrap());
exit(1);
}
};
rt.init_logger();
debug!("Hello. Logging was just enabled");
debug!("I already set up the Runtime object and build the commandline interface parser.");
debug!("Lets get rollin' ...");
rt.cli()
.subcommand_name()
.map_or_else(
|| {
debug!("No command");
// More error handling
},
|name| {
debug!("Call: {}", name);
match name {
"create" => create(&rt),
"read" => read(&rt),
"update" => update(&rt),
"delete" => delete(&rt),
_ => {
debug!("Unknown command");
// More error handling
},
};
}
)
2016-01-23 14:35:31 +00:00
}
2016-01-23 15:29:04 +00:00