diff options
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/check-version | 77 |
1 files changed, 77 insertions, 0 deletions
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:]]+)?\<v?$v\>" $f || { + msg="'$f' may need updating" + if [ $release = y ]; then + croak "$msg" + else + whine "$msg" + fi + } +done |