Skip to content

Commit 52cb11e

Browse files
committed
Modify "update.sh" to only consider releases whose SHA256 values are available
1 parent 9289139 commit 52cb11e

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

update.sh

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
set -e
2+
set -Eeuo pipefail
33

44
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")"
55

@@ -9,25 +9,51 @@ if [ ${#versions[@]} -eq 0 ]; then
99
fi
1010
versions=( "${versions[@]%/}" )
1111

12-
pipVersion="$(curl -sSL 'https://pypi.python.org/pypi/pip/json' | awk -F '"' '$2 == "version" { print $4 }')"
12+
pipVersion="$(curl -fsSL 'https://pypi.org/pypi/pip/json' | jq -r .info.version)"
1313

1414
for version in "${versions[@]}"; do
1515
case "$version" in
1616
3) pypy='pypy3' ;;
1717
2) pypy='pypy2' ;;
1818
*) echo >&2 "error: unknown pypy variant $version"; exit 1 ;;
1919
esac
20+
2021
# <td class="name"><a class="execute" href="/pypy/pypy/downloads/pypy-2.4.0-linux64.tar.bz2">pypy-2.4.0-linux64.tar.bz2</a></td>
2122
# <td class="name"><a class="execute" href="/pypy/pypy/downloads/pypy3-2.4.0-linux64.tar.bz2">pypy3-2.4.0-linux64.tar.bz2</a></td>
22-
fullVersion="$(curl -sSL 'https://bitbucket.org/pypy/pypy/downloads/' | grep -E "$pypy"'-v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2' | sed -r 's/^.*'"$pypy"'-v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2.*$/\1/' | sort -V | tail -1)"
23+
IFS=$'\n'
24+
tryVersions=( $(
25+
curl -fsSL 'https://bitbucket.org/pypy/pypy/downloads/' \
26+
| grep -E "$pypy"'-v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2' \
27+
| sed -r 's/^.*'"$pypy"'-v([0-9.]+(-alpha[0-9]*)?)-linux64.tar.bz2.*$/\1/' \
28+
| sort -rV
29+
) )
30+
unset IFS
2331

24-
# <p>pypy2.7-5.4.0 sha256:</p>
25-
# <pre class="literal-block">
26-
# ...
27-
# bdfea513d59dcd580970cb6f79f3a250d00191fd46b68133d5327e924ca845f8 pypy2-v5.4.0-linux64.tar.bz2
28-
# ...
29-
# </pre>
30-
sha256sum="$(curl -sSL 'http://pypy.org/download.html' | grep -m1 -E '[a-f0-9]{64} '"$pypy-v$fullVersion"'-linux64.tar.bz2' | cut -d' ' -f1)"
32+
fullVersion=
33+
sha256sum=
34+
for tryVersion in "${tryVersions[@]}"; do
35+
# <p>pypy2.7-5.4.0 sha256:</p>
36+
# <pre class="literal-block">
37+
# ...
38+
# bdfea513d59dcd580970cb6f79f3a250d00191fd46b68133d5327e924ca845f8 pypy2-v5.4.0-linux64.tar.bz2
39+
# ...
40+
# </pre>
41+
if \
42+
sha256sum="$(
43+
curl -fsSL 'http://pypy.org/download.html' \
44+
| grep -m1 -E '[a-f0-9]{64} '"$pypy-v$tryVersion"'-linux64.tar.bz2' \
45+
| cut -d' ' -f1
46+
)" \
47+
&& [ -n "$sha256sum" ] \
48+
; then
49+
fullVersion="$tryVersion"
50+
break
51+
fi
52+
done
53+
if [ -z "$fullVersion" ]; then
54+
echo >&2 "error: cannot find suitable release for '$version'"
55+
exit 1
56+
fi
3157

3258
(
3359
set -x

0 commit comments

Comments
 (0)