use clue_oxide::config::command_line_input::CommandLineInput;
use clue_oxide::config::Config;
use clue_oxide::info;
use std::time::Instant;
fn main() {
let now = Instant::now();
let args: Vec<String> = std::env::args().collect();
let input = CommandLineInput::new(args).unwrap_or_else(|err|{
eprintln!("CluE Error: {}.",err);
eprintln!("Try \"clue --help\" for more information.");
std::process::exit(1);
});
if input.show_help{
info::help::print_help();
return;
}
if input.show_license{
info::license::print_license();
return;
}
if input.show_warrenty{
info::warrenty::print_warrenty();
return;
}
if input.show_version{
info::version::print_version();
return;
}
if input.show_title{
info::title::print_title();
}
let mut config = Config::read_input(input).unwrap_or_else(
|err| {
eprintln!("CluE Error: {}.",err);
std::process::exit(1);
});
config.set_defaults().unwrap_or_else(
|err| {
eprintln!("CluE Error: {}.",err);
std::process::exit(1);
});
config.construct_time_axis().unwrap_or_else(
|err| {
eprintln!("CluE Error: {}.",err);
std::process::exit(1);
});
clue_oxide::run(config).unwrap_or_else(
|err| {
eprintln!("CluE Error: {}.",err);
std::process::exit(1);
});
let elapsed_time = now.elapsed();
eprintln!("CluE successfully completed in {} s.", elapsed_time.as_secs());
}