Add version check system

This commit is contained in:
2022-10-18 08:58:36 +02:00
parent 915426849b
commit eea2ecbf63
23 changed files with 204 additions and 26 deletions

View File

@ -4,6 +4,7 @@ pub use game_map::*;
pub use game_rules::*;
pub use play_config::*;
pub use printable_map::*;
pub use version::*;
mod boats_layout;
mod current_game_status;
@ -11,3 +12,4 @@ mod game_map;
mod game_rules;
mod play_config;
mod printable_map;
mod version;

View File

@ -0,0 +1,32 @@
//! # 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)
}
}