#!/bin/sh set -eu TLD="$(cat aux/tld.txt)" PROJECT_UC= while getopts 'n:N:' flag; do case "$flag" in n) PROJECT="$OPTARG" ;; N) PROJECT_UC="$OPTARG" ;; *) exit 2 ;; esac done shift $((OPTIND - 1)) assert_arg() { if [ -z "$1" ]; then echo "Missing $2" >&2 exit 2 fi } assert_arg "${PROJECT:-}" '-n PROJECT' if [ -z "${PROJECT_UC:-}" ]; then PROJECT_UC="$PROJECT" fi HOMEPAGE_LINK="Changelog for [$PROJECT_UC](https://$TLD/$PROJECT/en/)." if ! grep -qF "$HOMEPAGE_LINK" CHANGELOG.md; then echo "Missing link to homepage in CHANGELOG.md:" >&2 echo "$HOMEPAGE_LINK" exit 1 fi assert() { DATE="$1" VVERSION="$2" VERSION="${2#v}" CHANGELOG_ENTRY="$(printf \ '# [%s](https://euandre.org/git/%s/commit/?id=%s) - %s' \ "$VERSION" "$PROJECT" "$VVERSION" "$DATE")" if ! grep -qF "$CHANGELOG_ENTRY" CHANGELOG.md; then echo "Missing '$CHANGELOG_ENTRY' entry from CHANGELOG.md" >&2 exit 1 fi } if [ -e .git ]; then for VVERSION in $(git tag); do DATE="$(git log -1 --format=%cd --date=short "$VVERSION")" assert "$DATE" "$VVERSION" done fi # "$@" represents a list of tags to be also included in the verification. for VVERSION in "$@"; do DATE="$(date '+%Y-%m-%d')" assert "$DATE" "$VVERSION" done