use anyhow::Result;
mod platform;
mod pkt;
mod tls;
mod log;
mod opt;
const PROJECT_NAME: &str = "DPIBreak";
const PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
const PKG_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
const PKG_HOMEPAGE: &str = env!("CARGO_PKG_HOMEPAGE");
fn splash_banner() {
splash!("{PROJECT_NAME} v{PKG_VERSION} - {PKG_DESCRIPTION}");
splash!("{PKG_HOMEPAGE}");
splash!("");
}
fn main_1() -> Result<()> {
let opt = opt::Opt::from_args()?;
let initialized = opt.set_opt()?;
splash_banner();
platform::bootstrap()?;
crate::info!("{PROJECT_NAME} v{PKG_VERSION}");
initialized.log();
platform::run()?;
Ok(())
}
fn main() {
let code = match main_1() {
Ok(()) => 0,
Err(e) => {
crate::error!("{e}");
for (i, cause) in e.chain().skip(1).enumerate() {
crate::error!("caused by[{i}]: {cause}");
}
1
}
};
std::process::exit(code);
}