mod app;
mod cli;
mod generate;
use std::{io, process::ExitCode};
use image::ImageError;
fn main() -> ExitCode {
match app::run() {
Ok(()) => ExitCode::SUCCESS,
Err(err) => {
eprintln!("Error: {err:?}");
if let Some(e) = err.downcast_ref::<io::Error>() {
return sysexits::ExitCode::from(e.kind()).into();
}
if let Some(e) = err.downcast_ref::<ImageError>() {
return match e {
ImageError::Limits(_) => sysexits::ExitCode::OsErr.into(),
ImageError::Unsupported(_) => sysexits::ExitCode::Unavailable.into(),
ImageError::IoError(_) => sysexits::ExitCode::IoErr.into(),
_ => sysexits::ExitCode::DataErr.into(),
};
}
ExitCode::FAILURE
}
}
}