#!/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://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" 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"