diff --git a/Makefile b/Makefile index dce507c9b..2bd18249a 100644 --- a/Makefile +++ b/Makefile @@ -312,4 +312,8 @@ clean: $(VERSION_FILE) rm -rf share .dep +release: + @scripts/check-version -cdr $(VERSION_STRING) + # Add other rules (like tar-command) bellow + -include $(DEPS) diff --git a/scripts/check-version b/scripts/check-version new file mode 100755 index 000000000..82d2f3498 --- /dev/null +++ b/scripts/check-version @@ -0,0 +1,77 @@ +#!/bin/sh + +# $1 - version string +# options: +# -c colored grep +# -d debug +# -r release (exit status error; when called from Makefile) + +set -eu +#set -x + +files="Documentation/user-manual.txt Makefile README ReleaseNotes.txt" + +whine() { + echo "$0: $*" >&2 +} + +croak() { + whine "$*" + exit 1 +} + +color=n +debug=n +release=n +while getopts cdr opt; do + case $opt in + c) + color=y + ;; + d) + debug=y + ;; + r) + release=y + ;; + *) + croak "invalid option" + ;; + esac +done +shift $(($OPTIND - 1)) + +if [ $debug = y ]; then + opts=-n +else + opts=-q +fi +[ $color = n ] || opts="${opts:+ }--color" + +v=${1:-} +case $v in + *-*) + # Ignore development versions + if [ $release = y ]; then + croak "'$v' not a release tag" + else + exit 0 + fi + ;; + ''|*[!.0-9]*) + croak "invalid version string '$v'" + ;; +esac + +sts=0 +whine "checking for version $v" +for f in $files; do + grep $opts -EHio "(VERSION=|subsurface[[:blank:]]+)?\" $f || { + msg="'$f' may need updating" + if [ $release = y ]; then + croak "$msg" + else + whine "$msg" + fi + } +done