forked from asdf-vm/asdf-elixir
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlatest-stable
executable file
·51 lines (43 loc) · 1.89 KB
/
latest-stable
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env bash
version_gte_api_change() {
# Split the versions by dot character into arrays
IFS='.' read -r -a input_version_array <<<"$1"
IFS='.' read -r -a api_change_version_array <<<"0.16.0"
# Support for 3 numbers in semantic versioning
for i in {0..2}; do
# suport for shorter versions by padding with 0
[[ -z ${input_version_array[i]} ]] && input_version_array[i]=0
if ((input_version_array[i] > api_change_version_array[i])); then
# input version is higher
return 0
elif ((input_version_array[i] < api_change_version_array[i])); then
# input version is lower
return 1
fi
# else next loop
done
# versions are equal
return 0
}
# get the directory of the current script
ASDF_ELIXIR_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# calling a script to list all elixir releases
# reject releases before 1.0.0 (starting with 0)
# reject main and master branches
# reject releases with otp version
# reject release candidates
# reject empty line
# finally take last one
ASDF_ELIXIR_LATEST_VERSION=$("$ASDF_ELIXIR_SCRIPT_DIR"/list-all | tr " " "\n" | grep -Ev "^0|^main|^master|otp|rc|^$" | tail -n 1)
# support for v-dev and different asdf API versions
ASDF_ELIXIR_ASDF_VERSION="$(asdf version)"
if [ "$ASDF_ELIXIR_ASDF_VERSION" = "v-dev" ] || version_gte_api_change "${ASDF_ELIXIR_ASDF_VERSION#v}"; then
# use --no-header flag only in latest asdf API (go builds)
ASDF_ELIXIR_LATEST_OTP=$(asdf current --no-header erlang)
else
ASDF_ELIXIR_LATEST_OTP=$(asdf current erlang)
fi
# Note: asdf latest does not allows latest stable version to start with number
# therefore installing from source by git ref is not supported, see:
# https://github.com/asdf-vm/asdf/blob/v0.16.5/internal/versions/versions.go#L276
printf "%s-otp-%s\n" "$ASDF_ELIXIR_LATEST_VERSION" "$(printf "%s" "$ASDF_ELIXIR_LATEST_OTP" | tr -s " ." "\n" | sed -n 2p)"