33 lines
866 B
Rust

//! # Version Info
//!
//! Contains server version requirements information
use crate::consts;
use crate::utils::res_utils::Res;
use semver::Version;
#[derive(serde::Serialize, serde::Deserialize)]
pub struct VersionInfo {
current: String,
min_required: String,
}
impl VersionInfo {
pub fn load_static() -> Self {
Self {
current: consts::CURRENT_VERSION.to_string(),
min_required: consts::MIN_REQUIRED_VERSION.to_string(),
}
}
/// Check if builtin version is compatible with a remote version or not
pub fn is_compatible_with_static_version(&self) -> Res<bool> {
let static_version = Self::load_static();
let local_current = Version::parse(&static_version.current)?;
let min_required = Version::parse(&self.min_required)?;
Ok(min_required <= local_current)
}
}