#!/bin/sh
readonly verbose="${VERBOSE:-0}"
if [ "$verbose" -gt '1' ]
then
set -x
fi
set -e -f -u
readonly awk_program='/^v[0-9]+\.[0-9]+\.[0-9]+.*$/ {
if (!$4) {
# The last tag is a full release version, so bump the
# minor release number and zero the patch release number
# to get the next release.
$2++;
$3 = 0;
}
print($1 "." $2 "." $3);
next;
{
printf("invalid version: \"%s\"\n", $0);
exit 1;
}'
readonly last_tag="$(git describe --abbrev=0)"
readonly current_desc="$(git describe)"
readonly channel="$CHANNEL"
case "$channel"
in
('development')
echo 'v0.0.0'
;;
('edge')
next=$(echo $last_tag | awk -F '[.+-]' "$awk_program")
echo "${next}-SNAPSHOT-$(git rev-parse --short HEAD)"
('beta'|'release')
if [ "$current_desc" != "$last_tag" ]
echo 'need a tag' 1>&2
exit 1
echo "$last_tag"
(*)
echo "invalid channel '$channel', supported values are\
'development', 'edge', 'beta', and 'release'" 1>&2
esac