dgiot/scripts/relup-base-vsns.sh

75 lines
1.6 KiB
Bash
Raw Normal View History

2022-12-29 18:13:09 +08:00
#!/usr/bin/env bash
set -euo pipefail
# ensure dir
cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
## This script prints the relup upgrade base versions
## for the given EMQX edition (specified as first arg)
##
## The second argument is the current release version
## if not provided, it's taken from pkg-vsn.sh
usage() {
echo "Usage: $0 <EMQX_PROFILE> [<CURRENT_VERSION>]"
echo "e.g. $0 enterprise 4.3.10"
exit 1
}
parse_semver() {
echo "$1" | tr '.|-' ' '
}
EDITION="${1:-}"
[ -z "${EDITION}" ] && usage
## Get the current release version
## e.g.
## 5.0.0 when GA
## 5.0.0-beta.3 when pre-release
## 5.0.0-beta.3.abcdef00 when developing
CUR="${2:-}"
if [ -z "${CUR}" ]; then
CUR="$(./pkg-vsn.sh)"
fi
# shellcheck disable=SC2207
CUR_SEMVER=($(parse_semver "$CUR"))
if [ "${#CUR_SEMVER[@]}" -lt 3 ]; then
echo "$CUR is not Major.Minor.Patch"
usage
fi
case "${EDITION}" in
*enterprise*)
GIT_TAG_PREFIX="e"
RELUP_PATH_FILE="./data/relup-paths-ee.eterm"
;;
*)
GIT_TAG_PREFIX="v"
RELUP_PATH_FILE="./data/relup-paths.eterm"
;;
esac
# must not be empty for MacOS (bash 3.x)
TAGS=( 'dummy' )
TAGS_EXCLUDE=( 'dummy' )
base_versions="$(./scripts/relup-base-vsns.escript base-vsns "$CUR" "$RELUP_PATH_FILE" | xargs echo -n)"
for vsn in ${base_versions}; do
# shellcheck disable=SC2207
TAGS+=($(git tag -l "${GIT_TAG_PREFIX}${vsn}"))
done
for tag_to_del in "${TAGS_EXCLUDE[@]}"; do
TAGS=( "${TAGS[@]/$tag_to_del}" )
done
for tag in "${TAGS[@]}"; do
if [ "$tag" != '' ]; then
echo "$tag"
fi
done