#[macro_use]
extern crate snafu;
mod args;
mod check;
mod doc;
use args::Arguments;
use log::warn;
use snafu::ErrorCompat;
use structopt::StructOpt;
type Result<T, E = error::Error> = std::result::Result<T, E>;
mod error {
#[derive(Snafu, Debug)]
#[snafu(visibility(pub(crate)))]
pub enum Error {
#[snafu(display("OMMUI data error: {:?}", source))]
OmmuiData {
#[snafu(backtrace)]
source: ommui_data::Error,
},
#[snafu(display("I/O error: {:?}", source))]
Io {
source: std::io::Error,
backtrace: snafu::Backtrace,
},
#[snafu(display("{}", source))]
OmmuiFileLoading {
#[snafu(backtrace)]
source: ommui_file_loading::Error,
},
#[snafu(display("{}", source))]
Arnalisa {
#[snafu(backtrace)]
source: arnalisa::Error,
},
}
}
fn main() {
env_logger::from_env(
env_logger::Env::default().default_filter_or("warn"),
)
.init();
if let Err(s) = Arguments::from_args().run() {
warn!("{:#?}", s);
if let Some(backtrace) = ErrorCompat::backtrace(&s) {
warn!("{}", backtrace);
}
std::process::exit(2);
}
}