aboutsummaryrefslogblamecommitdiff
path: root/aux/workflow/assert-readme.sh
blob: 7afeb4c020b3595925ad98770a3e1283757495a3 (plain) (tree)
1
2
3
4
5
6
7
8
9
10


         



                      
                        

            























                                                
 
                     













                                                           

                                                 
 


        
                                       
                                                   
                                                  
                
                                          
                                                      

                                                                                 

   
                          


                     
                                                                                                                                                                                                                                                                                                    







                                                                         
                        



                                                 



                                                   
                                               






                        


                                                                    
 
                                                                   


                                                                          

                                                          

              
#!/bin/sh
set -eu

if [ ! -e .git ]; then
	exit
fi

TLD="$(cat aux/tld.txt)"
. aux/lib.sh

while getopts 'n:m:' flag; do
	case "$flag" in
		n)
			PROJECT="$OPTARG"
			;;
		m)
			MAILING_LIST="$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'
assert_arg "${MAILING_LIST:-}" '-m MAILING_LIST'

EXPECTED="$(mkstemp)"
cat <<EOF >> "$EXPECTED"

For running the extra development-only checks, run:

\`\`\`shell
$ make dev-check
\`\`\`

and for generating the documentation HTML and website, run:

\`\`\`shell
$ make public
\`\`\`

Send contributions to the [mailing list] via
[\`git send-email\`](https://git-send-email.io/).


## Links

- [homepage](https://$TLD/$PROJECT/en/)
- [source code](https://euandreh.xyz/$PROJECT.git/)
- [bug tracking](https://$TLD/$PROJECT/TODOs.html)
- [mailing list]
- [CI logs](https://$TLD/$PROJECT/ci.html)
- [CHANGELOG](https://$TLD/$PROJECT/en/CHANGELOG.html)

[mailing list]: https://lists.sr.ht/~euandreh/$MAILING_LIST?search=%5B$PROJECT%5D
EOF

RELEASES_LIST="$(mkstemp)"
add_release() {
	DATE="$1"
	VVERSION="$2"
	echo "- [$VVERSION](https://euandreh.xyz/$PROJECT.git/commit/?id=$VVERSION) [$PROJECT-$VVERSION.tar.gz](https://euandreh.xyz/$PROJECT.git/snapshot/$PROJECT-$VVERSION.tar.gz) ([sig](https://euandreh.xyz/$PROJECT.git/snapshot/$PROJECT-$VVERSION.tar.gz.asc)) - $DATE" >> "$RELEASES_LIST"
}

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

# "$@" represents a list of tags to be also included in the verification.
for VVERSION in "$@"; do
	if ! git tag | grep -qF "$VVERSION"; then
		DATE="$(date '+%Y-%m-%d')"
		add_release "$DATE" "$VVERSION"
	fi
done

if [ -s "$RELEASES_LIST" ]; then
	printf '\n\n## Releases\n\n' >> "$EXPECTED"
	sort -r "$RELEASES_LIST" >> "$EXPECTED"
fi

cat <<EOF >> "$EXPECTED"


## License

The code is licensed under
[GNU Affero General Public License v3.0 or later][AGPL-3.0-or-later]
(AGPL-3.0-or-later).

[AGPL-3.0-or-later]: https://euandreh.xyz/.git$PROJECT/tree/COPYING
EOF

if ! tail -n "$(wc -l < "$EXPECTED")" README.md | diff - "$EXPECTED"; then
	echo 'Wrong metadata at the end of README.md file'
	echo "See expected content at: $EXPECTED"
	exit 1
fi