51 lines
1.7 KiB
Bash
51 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
readonly JQ_VERSION='1.8.1'
|
|
readonly JQ_SHA256_AMD64='020468de7539ce70ef1bceaf7cde2e8c4f2ca6c3afb84642aabc5c97d9fc2a0d'
|
|
readonly JQ_SHA256_ARM64='6bc62f25981328edd3cfcfe6fe51b073f2d7e7710d7ef7fcdac28d4e384fc3d4'
|
|
readonly DOWNLOAD_BASE_URL="${JQ_DOWNLOAD_BASE_URL:-https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}}"
|
|
|
|
: "${RUNNER_TEMP:?RUNNER_TEMP must be set by the CI runner}"
|
|
: "${GITHUB_PATH:?GITHUB_PATH must be set by the CI runner}"
|
|
|
|
architecture="${RUNNER_ARCH:-$(uname -m)}"
|
|
case "${architecture}" in
|
|
X64 | x86_64 | amd64)
|
|
asset='jq-linux-amd64'
|
|
expected_sha256="${JQ_SHA256_AMD64}"
|
|
;;
|
|
ARM64 | aarch64 | arm64)
|
|
asset='jq-linux-arm64'
|
|
expected_sha256="${JQ_SHA256_ARM64}"
|
|
;;
|
|
*)
|
|
printf '::error::install-jq: unsupported runner architecture: %s\n' "${architecture}" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
install_dir="${RUNNER_TEMP}/jq-${JQ_VERSION}/bin"
|
|
destination="${install_dir}/jq"
|
|
mkdir -p "${install_dir}"
|
|
|
|
temporary="$(mktemp "${RUNNER_TEMP}/jq-${JQ_VERSION}.XXXXXX")"
|
|
trap 'rm -f "${temporary}"' EXIT
|
|
|
|
curl --fail --show-error --silent --location --retry 3 \
|
|
--proto '=https' --tlsv1.2 \
|
|
"${DOWNLOAD_BASE_URL}/${asset}" \
|
|
--output "${temporary}"
|
|
printf '%s %s\n' "${expected_sha256}" "${temporary}" | sha256sum -c -
|
|
chmod 0755 "${temporary}"
|
|
mv "${temporary}" "${destination}"
|
|
trap - EXIT
|
|
|
|
printf '%s\n' "${install_dir}" >> "${GITHUB_PATH}"
|
|
installed_version="$("${destination}" --version)"
|
|
if [[ "${installed_version}" != "jq-${JQ_VERSION}" ]]; then
|
|
printf '::error::install-jq: expected jq-%s, got %s\n' "${JQ_VERSION}" "${installed_version}" >&2
|
|
exit 1
|
|
fi
|
|
printf 'install-jq: %s installed under RUNNER_TEMP\n' "${installed_version}"
|