useful_linux_scripts/git_build_info.sh
2025-11-14 16:03:45 +00:00

48 lines
1.3 KiB
Bash
Executable File

#!/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 <<EOF > "$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}