Notes come from the matching CHANGELOG.md section. The macOS and Windows binaries the old release workflow built need runners this Gitea does not have. The CI also ignores .wolf, .claude and the release files. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
29 lines
834 B
Bash
Executable File
29 lines
834 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Imprime as notas de uma release: a seção do CHANGELOG.md daquela versão, ou o
|
|
# log de commits desde a tag anterior quando o changelog não tem a seção.
|
|
#
|
|
# scripts/release-notes.sh v1.2.3
|
|
set -euo pipefail
|
|
|
|
tag=${1:?uso: release-notes.sh <tag>}
|
|
version=${tag#v}
|
|
|
|
section=""
|
|
if [ -f CHANGELOG.md ]; then
|
|
section=$(awk -v head="## [$version]" '
|
|
index($0, head) == 1 { found = 1; next }
|
|
found && /^## \[/ { exit }
|
|
found && /^\[[^]]+\]: / { next }
|
|
found { print }
|
|
' CHANGELOG.md)
|
|
fi
|
|
|
|
if [ -n "$(printf '%s' "$section" | tr -d '[:space:]')" ]; then
|
|
printf '%s\n' "$section"
|
|
else
|
|
previous=$(git describe --tags --abbrev=0 "$tag^" 2>/dev/null || true)
|
|
echo "## Mudanças${previous:+ desde $previous}"
|
|
echo
|
|
git log --no-merges --format='- %s (%h)' "${previous:+$previous..}$tag"
|
|
fi
|