aboutsummaryrefslogblamecommitdiff
path: root/aux/workflow/assert-changelog.sh
blob: 7f9117f7fcf28c32d0740a7776ffeafd3d64c990 (plain) (tree)
1
2
3
4


         
                        



























                                            
 
                                                                       






                                                            



                        
                                                                                                      
 



                                                                             







                                                                         
                        

                                  
    
#!/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="# [$VERSION](https://git.euandreh.xyz/$PROJECT/commit/?id=$VVERSION) - $DATE"

	if ! grep -qF "$CHANGELOG_ENTRY" CHANGELOG.md; then
		echo "Missing '$CHANGELOG_ENTRY' entry from CHANGELOG.md" >&2
		exit 1
	fi
}

for VVERSION in $(git tag); do
	DATE="$(git log -1 --format=%cd --date=short "$VVERSION")"
	assert "$DATE" "$VVERSION"
done

# "$@" 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