diff --git a/server/build.rs b/server/build.rs new file mode 100644 index 0000000..67bbf49 --- /dev/null +++ b/server/build.rs @@ -0,0 +1,11 @@ +use std::process::Command; + +fn main() { + if let Ok(output) = Command::new("git").args(&["rev-parse", "--short", "HEAD"]).output() { + if let Ok(hash) = String::from_utf8(output.stdout) { + println!("cargo:rustc-env=GIT_HASH={}", hash.trim()); + } + } + println!("cargo:rerun-if-changed=../.git/HEAD"); + println!("cargo:rerun-if-changed=../.git/index"); +} diff --git a/server/src/main.rs b/server/src/main.rs index f4fe6c8..5f18ff0 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -243,6 +243,12 @@ fn run_server(state: Arc) -> Result<(), Box> }); let app = Router::new() + .route("/api/version", get(|| async move { + axum::Json(serde_json::json!({ + "version": env!("CARGO_PKG_VERSION"), + "git_hash": option_env!("GIT_HASH").unwrap_or("unknown") + })) + })) .route("/sse", get(sse_handler)) .route("/messages", post(message_handler)) .route("/health", get(health_handler))