#!/usr/bin/env bash # Imprime as notas de uma release: a imagem publicada e a seção do CHANGELOG.md # daquela versão (ou o log de commits desde a tag anterior, se não houver seção). # # scripts/release-notes.sh v1.2.3 git.exemplo.com/dono/projeto set -euo pipefail tag=${1:?uso: release-notes.sh } image=${2:?uso: release-notes.sh } version=${tag#v} echo "## Imagem" echo echo '```' echo "$image:$version" echo '```' echo 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