Implement hybrid versioning approach
This commit is contained in:
@@ -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": []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user