Skip to content

Commit 38eec10

Browse files
committed
fix: Include assets for 3.0.0
1 parent 4b732bb commit 38eec10

File tree

1 file changed

+47
-9
lines changed

1 file changed

+47
-9
lines changed

lib/utils.bash

+47-9
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ if [ -n "${GITHUB_API_TOKEN:-}" ]; then
1919
curl_opts=("${curl_opts[@]}" -H "Authorization: Bearer $GITHUB_API_TOKEN")
2020
fi
2121

22-
# todo sort by only Ammonite version, not Scala version
2322
sort_versions() {
24-
# Flip it so Ammonite tag comes before Scala version, and use - as the delimiter everywhere
25-
awk -F '[-.]' '{ print $3 "-" $4 "-" $5 "-" $1 "-" $2 }' |
26-
LC_ALL=C sort -t'-' -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n |
27-
awk -F '-' '{ print $4 "." $5 "-" $1 "." $2 "." $3 }' # Flip it back to normal
23+
# Use - as the delimiter everywhere for sort
24+
awk -F '[-.]' '{ print $1 "-" $2 "-" $3 "-" $4 "-" $5 }' |
25+
LC_ALL=C sort -t'-' -k 3,3n -k 4,4n -k 5,5n -k 1,1n -k 2,2n |
26+
# Put the delimiters back
27+
awk -F '-' '{ print $1 "." $2 "-" $3 "." $4 "." $5 }' |
28+
uniq
2829
}
2930

3031
# Make a query to the GitHub API
@@ -44,18 +45,55 @@ list_all_versions() {
4445
grep -oE '"name": "[0-9]+\.[0-9]+-[0-9]+\.[0-9]+\.[0-9]+"' |
4546
# Extract the asset names
4647
cut -d '"' -f 4 |
47-
uniq |
48+
sort_versions
49+
}
50+
51+
# Get names of assets from unstable releases
52+
filter_unstable_assets() {
53+
grep -oE '"name": "[0-9]+\.[0-9]+-[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-[a-z0-9]+"' |
54+
# Extract the asset names
55+
cut -d '"' -f 4
56+
}
57+
58+
list_all_unstable_versions() {
59+
# The releases response also includes all the assets, so we can just use that
60+
# instead of querying the assets for each release separately
61+
releases=$(gh_query releases)
62+
# e.g. 3.0.0
63+
latest_unstable_release=$(
64+
echo $releases |
65+
grep -oE '"name": "[0-9]+\.[0-9]\.+[0-9]+"' |
66+
cut -d '"' -f 4 |
67+
sort -t'.' -k 1,1n -k 2,2n -k 3,3n |
68+
tail -n 1)
69+
gh_query "releases" |
70+
filter_unstable_assets |
71+
# Only keep assets for the latest release
72+
grep $latest_unstable_release |
73+
cut -d '"' -f 1,2 |
4874
sort_versions
4975
}
5076

5177
download_release() {
52-
local version filename tag url
78+
local version filename tag url latest
5379
version="$1"
5480
filename="$2"
55-
5681
# The Ammonite version is <Scala version>-<Ammonite tag>
5782
tag=$(cut -d "-" -f 2 <<<"$version")
58-
url="$GH_REPO/releases/download/$tag/$version"
83+
84+
releases=$(gh_query "releases")
85+
86+
if [[ $releases =~ "\"$version\"" ]]; then
87+
url="$GH_REPO/releases/download/$tag/$version"
88+
else
89+
latest=$(
90+
echo $releases |
91+
filter_unstable_assets |
92+
grep $version |
93+
sort -t'-' -k 3,3n -k 4,4 |
94+
tail -n 1)
95+
url="$GH_REPO/releases/download/$tag/$latest"
96+
fi
5997

6098
echo "* Downloading $TOOL_NAME release $version..."
6199
curl "${curl_opts[@]}" \

0 commit comments

Comments
 (0)