From 7cd4b38ebd85c38b5f4b2bc4c0a6b6c2698e40be Mon Sep 17 00:00:00 2001 From: extrawurst <776816+extrawurst@users.noreply.github.com> Date: Sat, 19 Apr 2025 11:13:19 +0200 Subject: [PATCH] show git hash in game (#33) --- Cargo.lock | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 ++ build.rs | 13 +++++++++ src/debug.rs | 21 ++++++++++++++ 4 files changed, 117 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 2085fdd..fab0b0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2224,6 +2224,37 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn", +] + [[package]] name = "derive_more" version = "1.0.0" @@ -2993,6 +3024,7 @@ dependencies = [ "rand", "ron", "serde", + "vergen-gitcl", ] [[package]] @@ -3752,6 +3784,15 @@ dependencies = [ "syn", ] +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + [[package]] name = "objc" version = "0.2.7" @@ -5241,7 +5282,9 @@ dependencies = [ "deranged", "itoa", "js-sys", + "libc", "num-conv", + "num_threads", "powerfmt", "serde", "time-core", @@ -5567,6 +5610,43 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +[[package]] +name = "vergen" +version = "9.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b2bf58be11fc9414104c6d3a2e464163db5ef74b12296bda593cac37b6e4777" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", + "vergen-lib", +] + +[[package]] +name = "vergen-gitcl" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9dfc1de6eb2e08a4ddf152f1b179529638bedc0ea95e6d667c014506377aefe" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", + "time", + "vergen", + "vergen-lib", +] + +[[package]] +name = "vergen-lib" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b07e6010c0f3e59fcb164e0163834597da68d1f864e2b8ca49f74de01e9c166" +dependencies = [ + "anyhow", + "derive_builder", + "rustversion", +] + [[package]] name = "version-compare" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index 1fd450f..da2f886 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,6 +40,9 @@ bevy_common_assets = { version = "0.12.0", features = ["ron"] } serde = { version = "1.0.219", features = ["derive"] } ron = "0.8" +[build-dependencies] +vergen-gitcl = "1.0" + [lints.clippy] too_many_arguments = "allow" type_complexity = "allow" diff --git a/build.rs b/build.rs index dc880c3..0ff061b 100644 --- a/build.rs +++ b/build.rs @@ -1,4 +1,17 @@ +use vergen_gitcl::{Emitter, GitclBuilder}; + fn main() { + let gitcl = GitclBuilder::default() + .branch(true) + .sha(true) + .build() + .unwrap(); + Emitter::default() + .add_instructions(&gitcl) + .unwrap() + .emit() + .unwrap(); + #[cfg(target_os = "linux")] println!("cargo:rustc-link-arg=-Wl,-rpath,$ORIGIN"); } diff --git a/src/debug.rs b/src/debug.rs index 395333f..c82f72b 100644 --- a/src/debug.rs +++ b/src/debug.rs @@ -1,8 +1,11 @@ use bevy::prelude::*; use bevy_debug_log::LogViewerVisibility; +pub const GIT_HASH: &str = env!("VERGEN_GIT_SHA"); + pub fn plugin(app: &mut App) { app.add_systems(Update, update); + app.add_systems(Startup, setup); } fn update(mut commands: Commands, keyboard: Res>) { @@ -10,3 +13,21 @@ fn update(mut commands: Commands, keyboard: Res>) { commands.trigger(LogViewerVisibility::Toggle); } } + +fn setup(mut commands: Commands) { + commands.spawn(( + Name::new("githash-ui"), + Text::new(GIT_HASH), + TextFont { + font_size: 12.0, + ..default() + }, + TextLayout::new_with_justify(JustifyText::Left), + Node { + position_type: PositionType::Absolute, + top: Val::Px(5.0), + left: Val::Px(5.0), + ..default() + }, + )); +}