#!/bin/bash # --- Date / time (no spaces/colons) --- DATESTAMP=$(date +"%d%m%Y_%H%M%S") # --- Git info (with fallbacks if not a git repo) --- if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then GITHASH=$(git rev-parse --short HEAD 2>/dev/null || echo "no-git") BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "no-branch") REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null || echo ".") REPO_NAME=$(basename "$REPO_PATH") REMOTE_URL=$(git remote get-url origin 2>/dev/null || echo "no-remote") else GITHASH="no-git" BRANCH="no-branch" REPO_NAME="no-repo" REMOTE_URL="unknown" fi # --- Host and user --- HOSTNAME=$(hostname) USER_NAME=${USER:-unknown} # --- Where to put the header (CubeIDE default) --- OUT_DIR="." # "Core/Inc" OUT_FILE="${OUT_DIR}/build_info.h" mkdir -p "$OUT_DIR" cat < "$OUT_FILE" /* Auto-generated: DO NOT EDIT */ #ifndef BUILD_INFO_H #define BUILD_INFO_H #define BUILD_DATE "${DATESTAMP}" #define BUILD_GIT_HASH "${GITHASH}" #define BUILD_BRANCH "${BRANCH}" #define BUILD_REPO "${REPO_NAME}" #define BUILD_HOST "${HOSTNAME}" #define BUILD_USER "${USER_NAME}" #define REMOTE_URL "${REMOTE_URL}" #endif /* BUILD_INFO_H */ EOF echo "Generated ${OUT_FILE}" cat ${OUT_FILE}