72e488eea4
Mit dem Cargo-Zwischenspeicher wuerde ein einmal einkompilierter Stempel sonst veralten und der Beta-Update-Hinweis dauerhaft erscheinen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
36 lines
1.7 KiB
Rust
36 lines
1.7 KiB
Rust
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::<String>())
|
|
.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()
|
|
}
|