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