2021-01-05 06:36:54 +08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
set -eu
|
|
|
|
[ "${BASH_VERSINFO[0]}" -ge 3 ] && set -o pipefail
|
|
|
|
|
|
|
|
PLUGIN_DIR="$(dirname "${BASH_SOURCE[0]}")/.."
|
|
|
|
|
|
|
|
# shellcheck source=/dev/null
|
|
|
|
source "$PLUGIN_DIR/lib/helpers.sh"
|
|
|
|
|
|
|
|
check_shasum() {
|
|
|
|
local archive_file_name=$1
|
|
|
|
local authentic_checksum_file=$2
|
|
|
|
local authentic_checksum=""
|
|
|
|
|
|
|
|
authentic_checksum=$(<"$authentic_checksum_file")
|
|
|
|
|
|
|
|
if command -v sha256sum >/dev/null 2>&1; then
|
|
|
|
sha256sum \
|
2021-06-16 05:09:39 +08:00
|
|
|
-c <<<"$authentic_checksum $archive_file_name"
|
2021-01-05 06:36:54 +08:00
|
|
|
elif command -v shasum >/dev/null 2>&1; then
|
|
|
|
shasum \
|
|
|
|
-a 256 \
|
2021-05-13 01:46:48 +08:00
|
|
|
-c <<<"$authentic_checksum $archive_file_name"
|
2021-01-05 06:36:54 +08:00
|
|
|
else
|
|
|
|
fail "sha256sum or shasum is not available for use"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
download_golang () {
|
|
|
|
local version=$1
|
|
|
|
local download_path=$2
|
|
|
|
local platform=""
|
|
|
|
local arch=""
|
|
|
|
|
|
|
|
platform=$(get_platform)
|
|
|
|
arch=$(get_arch)
|
2022-12-17 12:32:12 +08:00
|
|
|
download_url="https://go.dev/dl/go${version}.${platform}-${arch}.tar.gz"
|
2021-01-05 06:36:54 +08:00
|
|
|
|
2021-06-16 22:46:00 +08:00
|
|
|
http_code=$(curl -I -w '%{http_code}' -s -o /dev/null "$download_url")
|
|
|
|
if [ "$http_code" -eq 404 ] || [ "$http_code" -eq 403 ]; then
|
2021-06-16 08:42:59 +08:00
|
|
|
fail "URL: ${download_url} returned status ${http_code}"
|
|
|
|
fi
|
|
|
|
|
2021-06-16 22:46:00 +08:00
|
|
|
curl "$download_url" -o "${download_path}/archive.tar.gz"
|
2021-06-16 08:42:59 +08:00
|
|
|
curl "${download_url}.sha256" -o "${download_path}/archive.tar.gz.sha256"
|
2021-01-05 06:36:54 +08:00
|
|
|
|
|
|
|
echo 'verifying checksum'
|
|
|
|
if ! check_shasum "${download_path}/archive.tar.gz" "${download_path}/archive.tar.gz.sha256"; then
|
|
|
|
fail "Authenticity of package archive can not be assured. Exiting."
|
|
|
|
else
|
|
|
|
msg "checksum verified"
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
download_golang "$ASDF_INSTALL_VERSION" "$ASDF_DOWNLOAD_PATH"
|