mirror of
https://github.com/kennyp/asdf-golang.git
synced 2024-10-06 12:42:07 +08:00
be7daa8c57
Closes #90
61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/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 \
|
|
-c <(echo "$authentic_checksum $archive_file_name")
|
|
elif command -v shasum >/dev/null 2>&1; then
|
|
shasum \
|
|
-a 256 \
|
|
-c <(echo "$authentic_checksum $archive_file_name")
|
|
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)
|
|
download_url="https://dl.google.com/go/go${version}.${platform}-${arch}.tar.gz"
|
|
|
|
http_code=$(curl -I -w '%{http_code}' -s -o /dev/null "$download_url")
|
|
if [ "$http_code" -eq 404 ] || [ "$http_code" -eq 403 ]; then
|
|
fail "URL: ${download_url} returned status ${http_code}"
|
|
fi
|
|
|
|
curl "$download_url" -o "${download_path}/archive.tar.gz"
|
|
|
|
if [ "unset" = "${ASDF_GOLANG_SKIP_CHECKSUM:-unset}" ]; then
|
|
curl "${download_url}.sha256" -o "${download_path}/archive.tar.gz.sha256"
|
|
|
|
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
|
|
else
|
|
err "checksum skipped"
|
|
fi
|
|
}
|
|
|
|
download_golang "$ASDF_INSTALL_VERSION" "$ASDF_DOWNLOAD_PATH"
|