33 lines
866 B
Rust
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)
|
|
}
|
|
}
|