Skip to content

Commit 26b7766

Browse files
committed
Find latest release of gftc native also
1 parent a0f441c commit 26b7766

File tree

1 file changed

+43
-4
lines changed

1 file changed

+43
-4
lines changed

rubies/truffleruby-gftc-dev

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,55 @@
1+
sort_release_urls () {
2+
# With release names like /^(jdk-)?24.1.0-dev-20240207_2228$/
3+
# strip everything up to the last dash so we can use the date as the sort field.
4+
sed 's/\(.\{1,\}-\([0-9_]\{1,\}\)\)$/\2;\1/' | sort -rn | sed 's/.\{1,\};//'
5+
}
6+
7+
find_asset_url () {
8+
local repo="$1" filename="$2"
9+
local releases_prefix="https://github.com/${repo}/releases"
10+
local assets_urls assets_url path
11+
local sort_release_urls=sort_release_urls
12+
type -t $sort_release_urls >/dev/null || sort_release_urls=cat
13+
14+
# The releases page hides assets behind an "expanded_assets" url
15+
# so we gather those, sort them according to "sort_release_urls" and store
16+
# them in an array to loop over next.
17+
IFS=$'\n' read -d '' -r -a assets_urls < <(http get "$releases_prefix" - | grep -oE "$releases_prefix/expanded_assets/[^\"]+" | $sort_release_urls)
18+
19+
# For each release look in the assets output for a download link to the specified filename.
20+
for assets_url in "${assets_urls[@]}"; do
21+
path="$(http get "$assets_url" - | grep -m1 -oE "/$repo/releases/download/[^/]+/$filename")"
22+
if [[ -n "$path" ]]; then
23+
echo "https://github.com/$path"
24+
return 0
25+
fi
26+
done
27+
28+
echo "Failed to find $repo release containing $filename" >&2
29+
return 1
30+
}
31+
32+
truffleruby_asset_url () {
33+
find_asset_url "graalvm/oracle-graalvm-dev-builds" "$1"
34+
}
35+
136
platform="$(uname -s)-$(uname -m)"
237
case $platform in
338
Linux-x86_64)
4-
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-linux-amd64.tar.gz" truffleruby
39+
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-linux-amd64.tar.gz")" || return $?
40+
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
541
;;
642
Linux-aarch64)
7-
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-linux-aarch64.tar.gz" truffleruby
43+
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-linux-aarch64.tar.gz")" || return $?
44+
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
845
;;
946
Darwin-x86_64)
10-
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-macos-amd64.tar.gz" truffleruby
47+
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-macos-amd64.tar.gz")" || return $?
48+
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
1149
;;
1250
Darwin-arm64)
13-
install_package "truffleruby-gftc-dev" "https://github.com/graalvm/oracle-graalvm-dev-builds/releases/latest/download/truffleruby-dev-macos-aarch64.tar.gz" truffleruby
51+
truffleruby_url="$(truffleruby_asset_url "truffleruby-dev-macos-aarch64.tar.gz")" || return $?
52+
install_package "truffleruby-gftc-dev" "$truffleruby_url" truffleruby
1453
;;
1554
*)
1655
colorize 1 "Unsupported platform: $platform"

0 commit comments

Comments
 (0)