1use std::{error, fmt, num::ParseIntError};
2
3#[derive(Debug, PartialEq)]
4pub enum DebianVersionError {
5 InvalidEpoch,
6 Empty,
7 InvalidUpstream,
8 EmptyUpstream,
9 UpstreamStartWithDigit,
10 UpstreamInvalidCharacters,
11 EmptyRevision,
12 RevisionInvalidCharacters,
13 InvalidFlags,
14}
15
16impl From<ParseIntError> for DebianVersionError {
17 fn from(_: ParseIntError) -> Self {
18 Self::InvalidEpoch
19 }
20}
21
22impl fmt::Display for DebianVersionError {
23 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24 match *self {
25 DebianVersionError::InvalidEpoch => write!(f, "Epochs must be numeric."),
26 DebianVersionError::Empty => write!(f, "Version is empty."),
27 DebianVersionError::InvalidUpstream => write!(f, "Invalid upstream version."),
28 DebianVersionError::EmptyUpstream => write!(f, "Upstream version is empty."),
29 DebianVersionError::UpstreamStartWithDigit => {
30 write!(f, "Upstream version must start with a digit.")
31 }
32 DebianVersionError::UpstreamInvalidCharacters => {
33 write!(f, "Upstream version contains invalid characters.")
34 }
35 DebianVersionError::EmptyRevision => write!(f, "Debian revision is empty."),
36 DebianVersionError::RevisionInvalidCharacters => {
37 write!(f, "Debian revision contains invalid characters.")
38 }
39 DebianVersionError::InvalidFlags => write!(f, "Invalid flag combination."),
40 }
41 }
42}
43
44impl error::Error for DebianVersionError {}