use std::fmt::{Display, Formatter};
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Version {
pub major: i64,
pub minor: i64,
pub patch: Option<i64>,
pub git_commit: String,
}
impl Display for Version {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self.patch {
Some(patch) => write!(f, "{}.{}.{}", self.major, self.minor, patch),
None => write!(f, "{}.{}.x", self.major, self.minor),
}
}
}
pub fn get_spec_version() -> Version {
Version {
major: 1,
minor: 62,
patch: None,
git_commit: "7f284b169ecd19602487eb4d290ae651d4398ce7".to_string(),
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_version_display() {
let version = Version {
major: 1,
minor: 62,
patch: None,
git_commit: "7f284b169ecd19602487eb4d290ae651d4398ce7".to_string(),
};
assert_eq!(version.to_string(), "1.62.x");
let version = Version {
major: 1,
minor: 62,
patch: Some(1),
git_commit: "7f284b169ecd19602487eb4d290ae651d4398ce7".to_string(),
};
assert_eq!(version.to_string(), "1.62.1");
}
}