#!/usr/bin/env bash
#
# blame(jens)
#
# this runs "mvn versions:set" to update all modules to a new version

set -e          # raise exception if error
set -u          # raise exception if unset
set -o pipefail # raise exceptions in pipes

BASENAME=$(basename $0)
WORKDIR=$(cd $(dirname $0);pwd -P;)
cd $WORKDIR

# check java version
expected_version=17
if [[ -n ${JAVA_HOME-} ]] && [[ -x "$JAVA_HOME/bin/java" ]];  then
    _java="$JAVA_HOME/bin/java"
elif [[ -n $(type -p java) ]]; then
    _java=java
else
    echo "Missing Java!  Set JAVA_HOME environment variable to the path to a JDK."
    exit 1
fi

version=$("$_java" -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ "$version" < $expected_version ]]; then
    echo "This project requires Java $expected_version, but the current JDK version is $version"
    echo "Set JAVA_HOME to the directory of a $expected_version JDK."
    exit 1
fi
# end check java version

if [ $# == 0 ] || [ -z ${1} ]; then
  echo "ERROR: version argument is required.";
  echo "Usage: ${0} 0.3.5-SNAPSHOT";
  exit 1;
fi

new_version=${1}
shift 1

[[ $# -gt 0 ]] && {
        echo "WARN: Passing Maven options: $@" >&2
}
echo "Setting new version: ${new_version}"
./mvnw  --fail-fast versions:set -DnewVersion=${new_version} $@
