44 lines
1.4 KiB
Bash
Executable File
44 lines
1.4 KiB
Bash
Executable File
#!/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
|