fn main() { // Commit-Stempel zur Kompilierzeit einbetten (WR-02, Code-Review Phase 18): // `desktop-collect.sh` vergibt fuer den Beta-Kanal (main) jedem Commit // dieselbe X.Y.Z-Version (D-07) -- die Unterscheidung zwischen zwei // Beta-Bauten steckt nur im `commit`-Feld von manifest.json. Ohne einen // eigenen Commit-Stempel im Binary kann `lib.rs` diesen Fall nicht // erkennen. `--short=7` spiegelt exakt das Format, das // `desktop-collect.sh` fuer manifest.json schreibt. Fehlt `git` (z. B. // Quell-Tarball ohne .git-Ordner), bleibt der Wert leer -- dann greift // nur noch der reine Versionsvergleich. // // Vorrang hat die Umgebungsvariable TESSERA_COMMIT (die Pipeline setzt sie // auf den vollen Commit-Hash): der Cargo-Zwischenspeicher wuerde ein // `git rev-parse` sonst nicht neu auswerten, und ein alter Stempel im // Programm liesse den Beta-Update-Hinweis dauerhaft erscheinen. println!("cargo:rerun-if-env-changed=TESSERA_COMMIT"); println!("cargo:rerun-if-changed=../../../.git/HEAD"); let commit = std::env::var("TESSERA_COMMIT") .ok() .map(|s| s.trim().chars().take(7).collect::()) .filter(|s| !s.is_empty()) .or_else(|| { std::process::Command::new("git") .args(["rev-parse", "--short=7", "HEAD"]) .output() .ok() .filter(|output| output.status.success()) .and_then(|output| String::from_utf8(output.stdout).ok()) .map(|s| s.trim().to_string()) }) .unwrap_or_default(); println!("cargo:rustc-env=APP_COMMIT={commit}"); tauri_build::build() }