emqx/scripts/ensure-rebar3.sh

44 lines
935 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
[ "${DEBUG:-0}" -eq 1 ] && set -x
OTP_VSN="${OTP_VSN:-$(./scripts/get-otp-vsn.sh)}"
case ${OTP_VSN} in
25*)
VERSION="3.19.0-emqx-9"
;;
26*)
VERSION="3.20.0-emqx-1"
;;
*)
echo "Unsupported Erlang/OTP version $OTP_VSN"
exit 1
;;
esac
# ensure dir
cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")/.."
DOWNLOAD_URL='https://github.com/emqx/rebar3/releases/download'
download() {
echo "downloading rebar3 ${VERSION}"
curl -f -L "${DOWNLOAD_URL}/${VERSION}/rebar3" -o ./rebar3
}
# get the version number from the second line of the escript
# because command `rebar3 -v` tries to load rebar.config
# which is slow and may print some logs
version() {
head -n 2 ./rebar3 | tail -n 1 | tr ' ' '\n' | grep -E '^.+-emqx-.+'
}
if [ -f 'rebar3' ] && [ "$(version)" = "$VERSION" ]; then
exit 0
fi
download
chmod +x ./rebar3