Private
Public Access
1
0

Implement hybrid versioning approach

This commit is contained in:
2025-07-15 16:39:57 -07:00
parent 21703b9f8e
commit 3197814098
3 changed files with 39 additions and 2 deletions

View File

@@ -3,7 +3,11 @@
"allow": [ "allow": [
"Bash(find:*)", "Bash(find:*)",
"Bash(cargo build:*)", "Bash(cargo build:*)",
"Bash(diesel migration generate:*)" "Bash(diesel migration generate:*)",
"Bash(cargo clean:*)",
"Bash(git describe:*)",
"Bash(git add:*)",
"Bash(git commit:*)"
], ],
"deny": [] "deny": []
} }

View File

@@ -1,6 +1,7 @@
const KORDOPHONE_XML: &str = "include/net.buzzert.kordophonecd.Server.xml"; const KORDOPHONE_XML: &str = "include/net.buzzert.kordophonecd.Server.xml";
fn main() { fn main() {
// Generate D-Bus code
let out_dir = std::env::var("OUT_DIR").unwrap(); let out_dir = std::env::var("OUT_DIR").unwrap();
let out_path = std::path::Path::new(&out_dir).join("kordophone-server.rs"); let out_path = std::path::Path::new(&out_dir).join("kordophone-server.rs");
@@ -19,4 +20,36 @@ fn main() {
std::fs::write(out_path, output).expect("Error writing server dbus code"); std::fs::write(out_path, output).expect("Error writing server dbus code");
println!("cargo:rerun-if-changed={}", KORDOPHONE_XML); println!("cargo:rerun-if-changed={}", KORDOPHONE_XML);
// Create hybrid version: use Cargo.toml version as base, augment with git info
let cargo_version = env!("CARGO_PKG_VERSION");
let final_version = if let Ok(output) = std::process::Command::new("git")
.args(&["describe", "--tags", "--always", "--dirty"])
.output()
{
let git_desc = String::from_utf8_lossy(&output.stdout).trim().to_string();
// Check if we're on a clean tag that matches the cargo version
if git_desc == format!("v{}", cargo_version) || git_desc == cargo_version {
// Clean release build - just use cargo version
cargo_version.to_string()
} else {
// Development build - append git info
if git_desc.contains("-dirty") {
format!("{}-dev-{}", cargo_version, git_desc)
} else if git_desc.starts_with("v") && git_desc.contains(&format!("v{}", cargo_version)) {
// We're N commits ahead of the tag
format!("{}-dev-{}", cargo_version, git_desc.strip_prefix("v").unwrap_or(&git_desc))
} else {
// Fallback: just append the git description
format!("{}-dev-{}", cargo_version, git_desc)
}
}
} else {
// Git not available - just use cargo version
cargo_version.to_string()
};
println!("cargo:rustc-env=GIT_VERSION={}", final_version);
} }

View File

@@ -116,7 +116,7 @@ impl Daemon {
let database = Arc::new(Mutex::new(database_impl)); let database = Arc::new(Mutex::new(database_impl));
Ok(Self { Ok(Self {
version: "0.1.0".to_string(), version: env!("GIT_VERSION").to_string(),
database, database,
event_receiver, event_receiver,
event_sender, event_sender,