#!/bin/bash # prepare-commit-msg: Changelog-Eintrag in CHANGELOG-DEV.md schreiben (nur dev-Branch) # Laeuft nach pre-commit (Version bereits gebumpt) und vor commit-msg. # git add funktioniert hier zuverlässig für den aktuellen Commit. branch=$(git symbolic-ref --short HEAD 2>/dev/null) [[ "$branch" != "dev" ]] && exit 0 root=$(git rev-parse --show-toplevel) cd "$root" # Nur bei normalem Commit (nicht amend, merge, squash) commit_type="${2:-}" [[ "$commit_type" == "merge" || "$commit_type" == "squash" ]] && exit 0 # Aktuelle Version aus addon.xml (bereits vom pre-commit Hook hochgezaehlt) version=$(grep -oP 'version="\K[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?[^"]*' addon/addon.xml | head -1) [[ -z "$version" ]] && exit 0 # Commit-Message aus der Datei lesen (bereits vom User eingegeben oder per -m übergeben) msg=$(cat "$1") # Kommentarzeilen entfernen msg=$(echo "$msg" | grep -v '^#' | sed '/^[[:space:]]*$/d' | head -1) [[ -z "$msg" ]] && exit 0 today=$(date +%Y-%m-%d) # Prüfen ob dieser Versions-Eintrag bereits existiert (Doppel-Eintrag verhindern) if grep -q "^## ${version} " CHANGELOG-DEV.md 2>/dev/null; then exit 0 fi # Changelog-Eintrag aufbauen und prependen { echo "## ${version} - ${today}" echo "" echo "- ${msg}" echo "" cat CHANGELOG-DEV.md } > /tmp/changelog_new.md mv /tmp/changelog_new.md CHANGELOG-DEV.md git add CHANGELOG-DEV.md