use clap::FromArgMatches;
use clap::Subcommand;
use logforth::append;
use logforth::filter::EnvFilter;
use logforth::layout::TextLayout;
use logforth::Dispatch;
use logforth::Logger;
use crate::subcommand::SubCommand;
pub mod subcommand;
pub mod version;
fn main() {
Logger::new()
.dispatch(
Dispatch::new()
.filter(EnvFilter::from_default_env_or("info"))
.layout(TextLayout::default())
.append(append::Stderr),
)
.apply()
.unwrap();
let build_info = version::build_info();
let command = clap::Command::new("hawkeye")
.subcommand_required(true)
.about(build_info.description)
.version(build_info.version)
.long_version(version::version());
let command = SubCommand::augment_subcommands(command);
let args = command.get_matches();
match SubCommand::from_arg_matches(&args) {
Ok(cmd) => cmd.run(),
Err(e) => e.exit(),
}
}