website-and-documentation/scripts/generate-build-info.sh

48 lines
1.4 KiB
Bash
Raw Normal View History

#!/bin/bash
# Generate build information for Hugo
# This script collects git information and build metadata
set -euo pipefail
# Create data directory if it doesn't exist
mkdir -p data
# Get git information
GIT_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "unknown")
GIT_COMMIT_SHORT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
GIT_TAG=$(git describe --tags --exact-match 2>/dev/null || echo "")
GIT_DIRTY=""
# Check if working directory is dirty
if git diff-index --quiet HEAD -- 2>/dev/null; then
GIT_DIRTY="false"
else
GIT_DIRTY="true"
fi
# Get build information
BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
BUILD_TIME_HUMAN=$(date -u +"%Y-%m-%d %H:%M UTC")
BUILD_USER=$(whoami 2>/dev/null || echo "unknown")
BUILD_HOST=$(hostname 2>/dev/null || echo "unknown")
# Create JSON file for Hugo
cat > data/build_info.json << EOF
{
"git_commit": "${GIT_COMMIT}",
"git_commit_short": "${GIT_COMMIT_SHORT}",
"git_branch": "${GIT_BRANCH}",
"git_tag": "${GIT_TAG}",
"git_dirty": ${GIT_DIRTY},
"build_time": "${BUILD_TIME}",
"build_time_human": "${BUILD_TIME_HUMAN}",
"build_user": "${BUILD_USER}",
"build_host": "${BUILD_HOST}"
}
EOF
echo "✓ Build info generated: data/build_info.json"
echo " Git: ${GIT_BRANCH}@${GIT_COMMIT_SHORT}${GIT_TAG:+ (${GIT_TAG})}"
echo " Built: ${BUILD_TIME_HUMAN} by ${BUILD_USER}"