From da60b22a6a55ae7fee68b4c4a4ea03bea76ce077 Mon Sep 17 00:00:00 2001 From: Deepak singh Date: Wed, 1 Apr 2026 09:34:31 +0000 Subject: [PATCH] fix: centralize versioning across Rust and Lua (closes #175) --- .../extensions/kissmp/ui/tabs/server_list.lua | 3 +- KISSMultiplayer/lua/ge/extensions/network.lua | 5 +-- shared/Cargo.toml | 1 + shared/build.rs | 36 +++++++++++++++++++ shared/src/lib.rs | 4 +-- shared/src/version_gen.rs | 3 ++ 6 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 shared/build.rs create mode 100644 shared/src/version_gen.rs diff --git a/KISSMultiplayer/lua/ge/extensions/kissmp/ui/tabs/server_list.lua b/KISSMultiplayer/lua/ge/extensions/kissmp/ui/tabs/server_list.lua index c2508d01..6724ccfb 100644 --- a/KISSMultiplayer/lua/ge/extensions/kissmp/ui/tabs/server_list.lua +++ b/KISSMultiplayer/lua/ge/extensions/kissmp/ui/tabs/server_list.lua @@ -1,7 +1,8 @@ local M = {} local imgui = ui_imgui local http = require("socket.http") -local VERSION_PRTL = "0.7.1" +local version = require("lua/ge/extensions/version") +local VERSION_PRTL = version.VERSION_STR local filter_servers_notfull = imgui.BoolPtr(false) local filter_servers_notempty = imgui.BoolPtr(false) diff --git a/KISSMultiplayer/lua/ge/extensions/network.lua b/KISSMultiplayer/lua/ge/extensions/network.lua index b4ccb728..906e725d 100644 --- a/KISSMultiplayer/lua/ge/extensions/network.lua +++ b/KISSMultiplayer/lua/ge/extensions/network.lua @@ -1,6 +1,7 @@ local M = {} -M.VERSION_STR = "0.7.1" +local version = require("lua/ge/extensions/version") +M.VERSION_STR = version.VERSION_STR M.is_server_public = false M.downloads = {} @@ -337,7 +338,7 @@ local function connect(addr, player_name, is_public) name = player_name, secret = generate_secret(server_info.server_identifier), steamid64 = steamid64, - client_version = {0, 7} + client_version = version.VERSION } } send_data(client_info, true) diff --git a/shared/Cargo.toml b/shared/Cargo.toml index 35672ff7..67861547 100644 --- a/shared/Cargo.toml +++ b/shared/Cargo.toml @@ -3,6 +3,7 @@ name = "shared" version = { workspace = true } authors = { workspace = true } edition = { workspace = true } +build = "build.rs" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/shared/build.rs b/shared/build.rs new file mode 100644 index 00000000..61c849f1 --- /dev/null +++ b/shared/build.rs @@ -0,0 +1,36 @@ +use std::env; +use std::fs; +use std::path::Path; + +fn main() { + let version_str = env!("CARGO_PKG_VERSION"); + let parts: Vec = version_str.split('.') + .map(|s| s.parse().unwrap_or(0)) + .collect(); + let major = parts[0]; + let minor = parts[1]; + + // Generate Lua version file + let lua_version_content = format!( + "-- Generated by shared/build.rs\nlocal M = {{}}\nM.VERSION_STR = \"{}\"\nM.VERSION = {{ {}, {} }}\nreturn M\n", + version_str, major, minor + ); + + let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); + let lua_file_path = Path::new(&manifest_dir).parent().unwrap().join("KISSMultiplayer/lua/ge/extensions/version.lua"); + + // Create directory if it doesn't exist + if let Some(parent) = lua_file_path.parent() { + let _ = fs::create_dir_all(parent); + } + + let _ = fs::write(lua_file_path, lua_version_content); + + // Generate Rust version file + let rust_version_content = format!( + "// Generated by shared/build.rs\npub const VERSION: (u32, u32) = ({}, {});\npub const VERSION_STR: &str = \"{}\";\n", + major, minor, version_str + ); + let rust_file_path = Path::new(&manifest_dir).join("src/version_gen.rs"); + let _ = fs::write(rust_file_path, rust_version_content); +} diff --git a/shared/src/lib.rs b/shared/src/lib.rs index b62bca3e..72cd1c75 100644 --- a/shared/src/lib.rs +++ b/shared/src/lib.rs @@ -7,8 +7,8 @@ use std::io::Write; use chrono::Local; pub use log::{info, warn, error}; -pub const VERSION: (u32, u32) = (0, 7); -pub const VERSION_STR: &str = "0.7.1"; +mod version_gen; +pub use version_gen::*; #[derive(Serialize, Deserialize, Debug, Clone)] pub struct ClientInfoPrivate { diff --git a/shared/src/version_gen.rs b/shared/src/version_gen.rs new file mode 100644 index 00000000..349685ed --- /dev/null +++ b/shared/src/version_gen.rs @@ -0,0 +1,3 @@ +// Generated by shared/build.rs +pub const VERSION: (u32, u32) = (0, 7); +pub const VERSION_STR: &str = "0.7.1";