#/bin/sh

ver_gt() {
    [ "$1" != "$2" ] && [  "$2" == "$(echo "$1\n$2" | sort -V | head -n1)" ]
}

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PROJECT_ROOT="$(dirname ${SCRIPT_DIR})"
CUR_VSN=$(bash $SCRIPT_DIR/extract_version.sh)
NEW_VSN="$1"


check_ver() {
    if [[ $NEW_VSN =~ ^[0-9.]+$ ]]; then
        :
    else
        echo "Invalid version '$NEW_VSN'"
        exit 1
    fi
}

check_ver_increase() {
    if ! ver_gt $NEW_VSN $CUR_VSN; then
        echo "Invalid version '$NEW_VSN'. Must be greater than current version $CUR_VSN"
        exit 1
    fi
}

check_changelog() {
    if ! egrep "\b$NEW_VSN\b" $PROJECT_ROOT/docs/CHANGELOG.md >/dev/null; then
        echo "Invalid version '$NEW_VSN'. Missing entry in CHANGELOG.md"
        exit 1
    fi
}

set_version() {
    sed -i '' "s/$CUR_VSN/$NEW_VSN/g" $PROJECT_ROOT/ixwebsocket/IXWebSocketVersion.h
    echo "Set version to '$NEW_VSN'"
    exit 0
}

check_ver
check_ver_increase
check_changelog
set_version