fix(scripts): make multiple attempts to download
This commit is contained in:
@@ -55,5 +55,5 @@ download_gh_release() {
|
||||
|
||||
stdout "Fetching from ${owner}/${repo}: ${filename}"
|
||||
|
||||
curl --progress-bar --fail --location --remote-name --remote-time "${dl_url}"
|
||||
curl --progress-bar --fail --location --remote-name --remote-time --retry 5 --retry-connrefused --retry-all-errors "${dl_url}"
|
||||
}
|
||||
|
||||
@@ -17,18 +17,36 @@ download_deno() {
|
||||
local releases_url="https://github.com/${owner}/${repo}/releases"
|
||||
local url="${releases_url}/latest/download/${fn}"
|
||||
|
||||
test -n "${fn}"
|
||||
rm -v -f "./${fn}"* # this should never do anything
|
||||
[[ -n "${fn}" ]]
|
||||
|
||||
download_gh_release "${owner}" "${repo}" "${fn}" 'latest'
|
||||
# this should never do anything
|
||||
rm -v -f "./${fn}"*
|
||||
|
||||
# fetch the much smaller manifest first
|
||||
download_gh_release "${owner}" "${repo}" "${fn}.sha256sum" 'latest'
|
||||
local latest_version="${resolved_version}"
|
||||
test -n "${latest_version}"
|
||||
[[ -n "${latest_version}" ]]
|
||||
|
||||
url="${releases_url}/download/${latest_version}/${fn}"
|
||||
local latest_digest="$(./asfald-latest --get-hash "${url}")"
|
||||
verify_digest "${latest_digest}" "${fn}" || return 1
|
||||
|
||||
download_gh_release "${owner}" "${repo}" "${fn}.sha256sum" "${latest_version}"
|
||||
local latest_digest='' manifest_digest='' _attempt _tmpdir="$(realpath .)"
|
||||
for _attempt in {1..10}; do
|
||||
if [[ -z "${latest_digest}" ]]; then
|
||||
latest_digest="$(./asfald-latest --get-hash -- "${url}" || :)"
|
||||
fi
|
||||
if [[ -z "${manifest_digest}" ]]; then
|
||||
manifest_digest="$(./asfald-latest --get-hash -- "${url}.sha256sum" || :)"
|
||||
fi
|
||||
if ! TMPDIR="${_tmpdir}" ./asfald-latest --verbose -- "${url}"; then
|
||||
if ! TMPDIR="${_tmpdir}" ./asfald -o "${fn}" -w -p '${fullpath}.sha256sum' -- "${url}"; then
|
||||
download_gh_release "${owner}" "${repo}" "${fn}" "${latest_version}"
|
||||
fi
|
||||
fi
|
||||
if [[ -s "./${fn}" ]]; then break; else sleep "${_attempt}"; fi
|
||||
done
|
||||
|
||||
[[ -z "${manifest_digest}" ]] || verify_digest "${manifest_digest}" "${fn}.sha256sum" || return 1
|
||||
[[ -z "${latest_digest}" ]] || verify_digest "${latest_digest}" "${fn}" || return 1
|
||||
"${HERE}/shasum.py" -a sha256 "./${fn}.sha256sum"
|
||||
}
|
||||
|
||||
@@ -66,8 +84,11 @@ trap '_cleanup' EXIT
|
||||
cd "${work_dir}"
|
||||
|
||||
if [ '--only-record-version' != "${1-unset}" ]; then
|
||||
download_asfald
|
||||
download_asfald latest
|
||||
for _attempt in {1..5}; do
|
||||
[[ -x ./asfald ]] || download_asfald
|
||||
download_asfald latest && break
|
||||
sleep "${_attempt}"
|
||||
done; unset -v _attempt ;
|
||||
|
||||
download_deno "${deno_archive}"
|
||||
extract_deno "${deno_archive}" '/usr/local/bin'
|
||||
|
||||
@@ -46,13 +46,43 @@ download_tailwindcss() {
|
||||
;;
|
||||
esac
|
||||
|
||||
TMPDIR="$(realpath .)" ./asfald -o 'tailwindcss' -p '${path}/sha256sums.txt' "https://github.com/${owner}/${repo}/releases/latest/download/${TW_BIN}" && \
|
||||
local fn="${TW_BIN}"
|
||||
local releases_url="https://github.com/${owner}/${repo}/releases"
|
||||
local url="${releases_url}/latest/download/${fn}"
|
||||
|
||||
[[ -n "${fn}" ]]
|
||||
|
||||
# this should never do anything
|
||||
rm -v -f './sha256sums.txt' "./${fn}"*
|
||||
|
||||
# fetch the much smaller manifest first
|
||||
download_gh_release "${owner}" "${repo}" 'sha256sums.txt' 'latest'
|
||||
local latest_version="${resolved_version}"
|
||||
[[ -n "${latest_version}" ]]
|
||||
|
||||
url="${releases_url}/download/${latest_version}/${fn}"
|
||||
|
||||
local latest_digest='' manifest_digest='' _attempt _tmpdir="$(realpath .)"
|
||||
for _attempt in {1..10}; do
|
||||
if [[ -z "${latest_digest}" ]]; then
|
||||
latest_digest="$(./asfald-latest --get-hash -- "${url}" || :)"
|
||||
fi
|
||||
if [[ -z "${manifest_digest}" ]]; then
|
||||
manifest_digest="$(./asfald-latest --get-hash -- "${releases_url}/download/${latest_version}/sha256sums.txt" || :)"
|
||||
fi
|
||||
if ! TMPDIR="${_tmpdir}" ./asfald-latest --verbose -- "${url}"; then
|
||||
if ! TMPDIR="${_tmpdir}" ./asfald -o "${fn}" -w -p '${path}/sha256sums.txt' -- "${url}"; then
|
||||
download_gh_release "${owner}" "${repo}" "${fn}" "${latest_version}"
|
||||
fi
|
||||
fi
|
||||
if [[ -s "./${fn}" ]]; then break; else sleep "${_attempt}"; fi
|
||||
done
|
||||
|
||||
[[ -z "${manifest_digest}" ]] || verify_digest "${manifest_digest}" 'sha256sums.txt' || return 1
|
||||
[[ -z "${latest_digest}" ]] || verify_digest "${latest_digest}" "${fn}" || return 1
|
||||
"${HERE}/shasum.py" -a sha256 './sha256sums.txt' && \
|
||||
mv -v "${fn}" tailwindcss && \
|
||||
chmod -v a+rx tailwindcss
|
||||
local latest_version="$(get_tailwindcss_version ./tailwindcss)"
|
||||
test -n "${latest_version}" || return 1
|
||||
local url="https://github.com/${owner}/${repo}/releases/download/v${latest_version}/${TW_BIN}"
|
||||
local latest_digest="$(./asfald-latest --get-hash "${url}")"
|
||||
verify_digest "${latest_digest}" 'tailwindcss' || return 1
|
||||
}
|
||||
|
||||
get_tailwindcss_version() {
|
||||
@@ -84,8 +114,11 @@ _cleanup() {
|
||||
trap '_cleanup' EXIT
|
||||
cd "${work_dir}"
|
||||
|
||||
download_asfald
|
||||
download_asfald latest
|
||||
for _attempt in {1..5}; do
|
||||
[[ -x ./asfald ]] || download_asfald
|
||||
download_asfald latest && break
|
||||
sleep "${_attempt}"
|
||||
done; unset -v _attempt ;
|
||||
|
||||
download_tailwindcss
|
||||
install -v -t "${dest_dir}" tailwindcss
|
||||
|
||||
Reference in New Issue
Block a user