#!/bin/sh

die()
{
	echo "$*" 2>&1
	exit 1
}

test "$#" -eq 2 || die "Usage: updver [library] [version]"

library=$1
dir=${library}0

vv=$(printf '%s\n' "$2" | sed 's/v//')

major=$(printf '%s\n' "$vv" | sed 's/\..*//')
minor=$(printf '%s\n' "$vv" | sed 's/[^.]*\.\([^.]*\)\..*/\1/')
patch=$(printf '%s\n' "$vv" | sed 's/.*\.//')

vs="$major.$minor.$patch"

oldhdr=$(head -1 "$dir"/NEWS)

msgfile=$(mktemp)

printf '%s (%s)\n\n' "$vs" "$(date +'%Y.%m.%d')" > "$msgfile"
cat "$dir"/NEWS >> "$msgfile"

test -n "$EDITOR" || die 'missing $EDITOR env var'
$EDITOR "$msgfile"

printf 'Ok? (y/n) '
read -r ok
case "$ok" in
y|Y)	;;
*)	die "Aborted. (File is $msgfile.)" ;;
esac

cp "$msgfile" "$dir/"NEWS
echo "/version/c
version       = \"$vs\"
.
p
wq" | ed -s "$dir/$library".nimble

echo "/Major/s/[0-9]*$/$major/
/Minor/s/[0-9]*$/$minor/
/Patch/s/[0-9]*$/$patch/
g/.*/p
wq" | ed -s "$dir/$library"/version.nim

git add .
git commit -m "$library version $vs"

tmp2=$(mktemp)

while read line
do	if test "$line" = "$oldhdr"; then break; fi
	printf '%s\n' "$line"
done <"$dir/"NEWS >"$tmp2"

git tag -faeF "$tmp2" "v$vs"
