asdf-golang/bin/download
Julien Bongars ae1c810a85
fix: replace google with go url (#88)
Co-authored-by: julien <julien@undercurrent.tech>
2022-12-16 23:32:12 -05:00

56 lines
1.6 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 <<<"$authentic_checksum $archive_file_name"
elif command -v shasum >/dev/null 2>&1; then
shasum \
-a 256 \
-c <<<"$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://go.dev/dl/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"
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
}
download_golang "$ASDF_INSTALL_VERSION" "$ASDF_DOWNLOAD_PATH"