blob: 4846f84c6eeddeb89e9a2d78b23d56b0a71b6ce3 [file] [log] [blame]
use semver::Version;
/// Enum which represents the update status of a package
#[derive(Debug)]
pub enum Status {
Unchanged,
Removed,
Version(Version),
}
impl Status {
pub fn from_versions(from: &Version, to: Option<&Version>) -> Status {
if let Some(to) = to {
if from == to {
Status::Unchanged
} else {
Status::Version(to.clone())
}
} else {
Status::Removed
}
}
pub fn is_changed(&self) -> bool {
!matches!(*self, Status::Unchanged)
}
}
impl ::std::string::ToString for Status {
fn to_string(&self) -> String {
match *self {
Status::Unchanged => "---".to_owned(),
Status::Removed => "Removed".to_owned(),
Status::Version(ref v) => v.to_string(),
}
}
}
#[derive(Debug)]
pub struct PkgStatus {
pub compat: Status,
pub latest: Status,
}