#!/usr/bin/env bash
set -euo pipefail

# is_prerelease prints "true" if the git tag denotes a prerelease version.
# Prints "false" otherwise.
#
# It handles both simple git tags (starting with "v", e.g v0.2.5 or v4.2.0) and
# prefixed git tags (e.g "flutter_comms-v0.0.5" or "leancode_lint-v1.3.0").
#
# Usage:
#
# $ is_prerelease <package_name> <git_tag>
#
# For example:
#
# $ is_prerelease some_single_package v0.7.3
#
# $ is_prerelease leancode_contracts leancode_contracts-v2.1.0
#
# $ is_prerelease leancode_contracts 2.1.0 # the leading "v" can be ommitted

if [ "$#" = 1 ]; then
    tag="${1:-}"
elif [ "$#" = 2 ]; then
    package_name="${1:-}"
    tag="${2:-}"
fi

if [ -z "$tag" ]; then
    echo "error: missing tag" 1>&2
    exit 1
fi

if [ -n "${package_name:-}" ]; then
    # package name + git tag
    version="${tag#"$package_name-v"}"
    version="${version#v}"
else
    version="$(echo "$tag" | cut -d '-' -f 2-)"
    version="${version#v}"
fi

suffix="$(echo "$version" | cut -d '-' -f 2-)"
if [ "$suffix" = "$version" ]; then
    suffix=""
fi

if [ -n "$suffix" ]; then
    echo "true"
elif [[ "$version" == 0* ]]; then
    echo "true"
else
    echo "false"
fi
