pub mod codes {
pub const SUCCESS: i32 = 0;
pub const USAGE: i32 = 2;
pub const IO_ERROR: i32 = 3;
pub const FORMAT_ERROR: i32 = 4;
pub const INTEGRITY_ERROR: i32 = 5;
pub const UNSUPPORTED: i32 = 6;
pub const RESOURCE_LIMIT: i32 = 7;
pub const COMPARISON_MISMATCH: i32 = 8;
pub const BACKEND_UNAVAILABLE: i32 = 9;
pub const INTERNAL_ERROR: i32 = 10;
}
pub fn error_to_exit_code(error: &crate::error::AppError) -> i32 {
match error {
crate::error::AppError::Io(_) => codes::IO_ERROR,
crate::error::AppError::Format(_) => codes::FORMAT_ERROR,
crate::error::AppError::Model(_) => codes::FORMAT_ERROR,
crate::error::AppError::Codec(_) => codes::FORMAT_ERROR,
crate::error::AppError::Integrity(_) => codes::INTEGRITY_ERROR,
crate::error::AppError::ResourceLimit(_) => codes::RESOURCE_LIMIT,
crate::error::AppError::Backend(_) => codes::BACKEND_UNAVAILABLE,
crate::error::AppError::Comparison(_) => codes::COMPARISON_MISMATCH,
crate::error::AppError::ExternalOracle(_) => codes::IO_ERROR,
crate::error::AppError::InternalInvariant(_) => codes::INTERNAL_ERROR,
}
}