@@ -8,7 +8,9 @@ if [ ${#versions[@]} -eq 0 ]; then
8
8
versions=( * / )
9
9
fi
10
10
versions=( " ${versions[@]%/ } " )
11
- releasePage=" $( curl -fsSL ' https://www.ruby-lang.org/en/downloads/releases/' ) "
11
+
12
+ releasesPage=" $( curl -fsSL ' https://www.ruby-lang.org/en/downloads/releases/' ) "
13
+ newsPage=" $( curl -fsSL ' https://www.ruby-lang.org/en/news/' ) " # occasionally, releases don't show up on the Releases page
12
14
13
15
latest_gem_version () {
14
16
curl -fsSL " https://rubygems.org/api/v1/gems/$1 .json" | sed -r ' s/^.*"version":"([^"]+)".*$/\1/'
@@ -34,19 +36,32 @@ for version in "${versions[@]}"; do
34
36
); unset IFS
35
37
36
38
fullVersion=
39
+ shaVal=
37
40
for tryVersion in " ${allVersions[@]} " ; do
38
- if echo " $releasePage " | grep -q " Ruby ${tryVersion} <" ; then
39
- fullVersion=" $tryVersion "
40
- break
41
+ if \
42
+ {
43
+ versionReleasePage=" $( echo " $releasesPage " | grep " <td>Ruby $tryVersion </td>" -A 2 | awk -F ' "' ' $1 == "<td><a href=" { print $2; exit }' ) " \
44
+ && [ " $versionReleasePage " ]
45
+ } \
46
+ || {
47
+ versionReleasePage=" $( echo " $newsPage " | grep -oE ' <a href="[^"]+">Ruby ' " $tryVersion " ' Released</a>' | cut -d' "' -f2) " \
48
+ && [ " $versionReleasePage " ]
49
+ } \
50
+ ; then
51
+ if \
52
+ shaVal=" $( curl -fsSL " https://www.ruby-lang.org/$versionReleasePage " | tac| tac| grep " ruby-$tryVersion .tar.xz" -A 5 | awk ' /^SHA256:/ { print $2; exit }' ) " \
53
+ && [ " $shaVal " ] \
54
+ ; then
55
+ fullVersion=" $tryVersion "
56
+ break
57
+ fi
41
58
fi
42
59
done
43
60
44
61
if [ -z " $fullVersion " ]; then
45
62
echo >&2 " warning: cannot determine sha for $version (tried all of ${allVersions[*]} ); skipping"
46
63
continue
47
64
fi
48
- versionReleasePage=" $( echo " $releasePage " | grep " <td>Ruby $fullVersion </td>" -A 2 | awk -F ' "' ' $1 == "<td><a href=" { print $2; exit }' ) "
49
- shaVal=" $( curl -fsSL " https://www.ruby-lang.org/$versionReleasePage " | tac| tac| grep " ruby-$fullVersion .tar.xz" -A 5 | awk ' /^SHA256:/ { print $2; exit }' ) "
50
65
51
66
echo " $version : $fullVersion ; rubygems $rubygems , bundler $bundler ; $shaVal "
52
67
0 commit comments