use serde::Serialize;
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum InstallationMethod {
Release,
Cargo,
Unknown,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum SelfUpdateStatus {
UpToDate,
Available,
Updated,
}
#[derive(Debug, Eq, PartialEq, Serialize)]
pub struct SelfUpdateSuccess {
pub current_version: String,
pub latest_version: String,
pub status: SelfUpdateStatus,
pub installation_method: InstallationMethod,
pub release_url: String,
}
#[derive(Debug)]
pub(crate) enum StartupUpdateOutcome {
Continue,
Notice(SelfUpdateSuccess),
Updated,
}
impl StartupUpdateOutcome {
pub const fn should_exit(&self) -> bool {
matches!(self, Self::Updated)
}
}