diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 84edabe..a09e03a 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -36,6 +36,7 @@ jobs: with: context: . platforms: linux/amd64 + args: GIT_HASH=${{ env.GITHUB_SHA }} push: true tags: git.toast-server.net/toast/kon:main build-args: CARGO_TOKEN=${{ secrets.CARGO_TOKEN }} diff --git a/Cargo.lock b/Cargo.lock index b658df0..2753e27 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1020,7 +1020,7 @@ dependencies = [ [[package]] name = "kon" -version = "0.3.11" +version = "0.3.12" dependencies = [ "bb8", "bb8-postgres", diff --git a/Cargo.toml b/Cargo.toml index faa9802..f3d0878 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kon" -version = "0.3.11" +version = "0.3.12" edition = "2021" [dependencies] diff --git a/Dockerfile b/Dockerfile index bb38c7b..5370414 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ FROM rust:1.80-alpine3.20 AS chef ENV RUSTFLAGS="-C target-feature=-crt-static" +ARG GIT_HASH +ENV GIT_COMMIT_HASH=${GIT_HASH} RUN apk add --no-cache openssl-dev musl-dev RUN cargo install cargo-chef WORKDIR /builder diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..be30f0b --- /dev/null +++ b/build.rs @@ -0,0 +1,10 @@ +fn main() { + #[cfg(feature = "production")] + { + if let Ok(git_commit_hash) = std::env::var("GIT_COMMIT_HASH") { + println!("cargo:rustc-env=GIT_COMMIT_HASH={}", &git_commit_hash[..7]); + } else { + println!("cargo:rustc-env=GIT_COMMIT_HASH=no_env_set"); + } + } +} diff --git a/src/commands/uptime.rs b/src/commands/uptime.rs index f401428..1a17136 100644 --- a/src/commands/uptime.rs +++ b/src/commands/uptime.rs @@ -1,9 +1,10 @@ use crate::{ Error, + GIT_COMMIT_HASH, internals::utils::{ + BOT_VERSION, format_duration, - concat_message, - BOT_VERSION + concat_message } }; @@ -69,7 +70,7 @@ pub async fn uptime(ctx: poise::Context<'_, (), Error>) -> Result<(), Error> { } let stat_msg = vec![ - format!("**{} {}**", _bot.name, BOT_VERSION.as_str()), + format!("**{} {}** `{}`", _bot.name, BOT_VERSION.as_str(), GIT_COMMIT_HASH), format!(">>> System: `{}`", format_duration(sys_uptime)), format!("Process: `{}`", format_duration(proc_uptime)), format!("CPU: `{}`", format!("{}", cpu[0].brand())), diff --git a/src/main.rs b/src/main.rs index c12d8cd..8ddfed6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ mod internals; use crate::{ internals::{ utils::{ + BOT_VERSION, token_path, mention_dev }, @@ -43,6 +44,10 @@ use poise::serenity_prelude::{ type Error = Box; static TASK_RUNNING: AtomicBool = AtomicBool::new(false); +#[cfg(feature = "production")] +pub static GIT_COMMIT_HASH: &str = env!("GIT_COMMIT_HASH"); +pub static GIT_COMMIT_HASH: &str = "devel"; + async fn on_ready( ctx: &Context, ready: &Ready, @@ -56,6 +61,7 @@ async fn on_ready( println!("Event[Ready][Notice]: Session limit: {}/{}", session.remaining, session.total); } + println!("Event[Ready]: Build version: {} ({})", BOT_VERSION.to_string(), GIT_COMMIT_HASH); println!("Event[Ready]: Connected to API as {}", ready.user.name); let message = CreateMessage::new(); @@ -173,7 +179,7 @@ async fn main() { Some(guild) => guild.name.clone(), None => String::from("Direct Message") }; - println!("Discord[{}] {} ran /{}", get_guild_name, ctx.author().name, ctx.command().qualified_name); + println!("Discord[{}]: {} ran /{}", get_guild_name, ctx.author().name, ctx.command().qualified_name); }), on_error: |error| Box::pin(async move { match error {