fix(server): embed git SHA and build date in server binary

The server used option_env!() for FABRO_GIT_SHA and FABRO_BUILD_DATE,
but no build.rs set them — so `fabro version` always showed "unknown".
Add a build.rs to fabro-server (matching fabro-cli's) and remove the
Sandbox line from `fabro system info`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-04-14 20:08:45 -04:00
parent a3320809ab
commit d863b54ac0
No known key found for this signature in database
3 changed files with 30 additions and 4 deletions

View file

@ -66,10 +66,6 @@ pub(super) async fn info_command(
.and_then(|runs| runs.active)
.unwrap_or_default()
);
println!(
"Sandbox: {}",
response.sandbox_provider.as_deref().unwrap_or("unknown")
);
println!("Uptime: {}s", response.uptime_secs.unwrap_or_default());
}

View file

@ -79,6 +79,9 @@ walkdir.workspace = true
multer = "3"
thiserror.workspace = true
[build-dependencies]
chrono = { workspace = true }
[dev-dependencies]
tokio = { workspace = true, features = ["test-util", "macros"] }
tower = "0.5"

View file

@ -0,0 +1,27 @@
#[expect(
clippy::disallowed_methods,
reason = "Build scripts run outside Tokio and need a synchronous git probe for the embedded build SHA."
)]
fn main() {
println!("cargo:rerun-if-changed=../../../.git/HEAD");
let sha = std::process::Command::new("git")
.args(["rev-list", "-1", "HEAD"])
.output()
.ok()
.and_then(|o| {
if o.status.success() {
String::from_utf8(o.stdout)
.ok()
.map(|s| s.trim().to_string())
} else {
None
}
})
.unwrap_or_default();
let short_sha = if sha.len() >= 7 { &sha[..7] } else { &sha };
println!("cargo:rustc-env=FABRO_GIT_SHA={short_sha}");
let build_date = chrono::Utc::now().format("%Y-%m-%d").to_string();
println!("cargo:rustc-env=FABRO_BUILD_DATE={build_date}");
}