use crate::UpdateFaultPoint;
#[derive(Debug, thiserror::Error)]
pub enum UpdateError {
#[error("invalid artifact metadata: {0}")]
InvalidArtifact(String),
#[error("incompatible artifact: {0}")]
Incompatible(String),
#[error("update provider failed: {0}")]
Provider(String),
#[error("artifact exceeds maximum size of {max_bytes} bytes")]
ArtifactTooLarge {
max_bytes: usize,
},
#[error("artifact checksum mismatch")]
ChecksumMismatch,
#[error("artifact authenticity verification failed: {0}")]
Authenticity(String),
#[error("artifact store failed: {0}")]
Store(String),
#[error("activated artifact failed health verification: {0}")]
Health(String),
#[error("injected update fault at {0:?}")]
InjectedFault(UpdateFaultPoint),
#[error("rollback failed after {cause}: {rollback}")]
RollbackFailed {
cause: String,
rollback: String,
},
}
pub type UpdateResult<T> = Result<T, UpdateError>;