ommui_data 0.39.0

OMMUI data structures
Documentation
#[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 {
        /// An error in the OMMUI data crate.
        #[snafu(display("OMMUI data error: {:?}", source))]
        OmmuiData {
            /// The source error.
            #[snafu(backtrace)]
            source: ommui_data::Error,
        },

        /// An IO error happened.
        #[snafu(display("I/O error: {:?}", source))]
        Io {
            source: std::io::Error,
            backtrace: snafu::Backtrace,
        },

        /// An error during loading a file with ommui.
        #[snafu(display("{}", source))]
        OmmuiFileLoading {
            #[snafu(backtrace)]
            source: ommui_file_loading::Error,
        },

        /// Arnalisa 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);
    }
}