mirror of
https://github.com/kennyp/asdf-golang.git
synced 2024-10-05 12:12:06 +08:00
d8dec15ccc
* Add Makefile for Hygiene Signed-off-by: Sora Morimoto <sora@morimoto.io> * make format Signed-off-by: Sora Morimoto <sora@morimoto.io> --------- Signed-off-by: Sora Morimoto <sora@morimoto.io> Co-authored-by: Kenny Parnell <k.parnell@gmail.com>
73 lines
2.1 KiB
Bash
Executable File
73 lines
2.1 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"
|
|
|
|
install_golang() {
|
|
local version="$1"
|
|
local download_path="$2"
|
|
local install_path="$3"
|
|
created_tmp="0"
|
|
|
|
if [ -z "$download_path" ]; then
|
|
download_path=$(mktemp -dt asdf-golang.XXXX)
|
|
created_tmp="1"
|
|
ASDF_INSTALL_VERSION="$version" ASDF_DOWNLOAD_PATH="$download_path" "$PLUGIN_DIR/bin/download"
|
|
fi
|
|
|
|
tar -C "$install_path" -xzf "${download_path}/archive.tar.gz"
|
|
|
|
if [ "1" = "$created_tmp" ]; then
|
|
rm -r "$download_path"
|
|
fi
|
|
}
|
|
|
|
install_default_go_pkgs() {
|
|
local go_path="$1/go/bin"
|
|
local default_go_pkgs="${ASDF_GOLANG_DEFAULT_PACKAGES_FILE:-${HOME}/.default-golang-pkgs}"
|
|
IFS=. read -r go_major_version go_minor_version <<<"${2}"
|
|
|
|
if [ ! -f "$default_go_pkgs" ]; then return; fi
|
|
|
|
while read -r line; do
|
|
name=$(echo "$line" |
|
|
sed 's|\(.*\) //.*$|\1|' |
|
|
sed -E 's|^[[:space:]]*//.*||') # the first sed is for comments after package names, the second for full line comments
|
|
|
|
# Skip empty lines
|
|
if [ -z "$name" ]; then continue; fi
|
|
|
|
echo -ne "\nInstalling \033[33m${name}\033[39m go pkg... " >&2
|
|
|
|
# if using go > 1.16 then use go install as the preferred donwload path
|
|
if [ "$go_major_version" -ge 2 ] || [ "${go_minor_version//[!0-9]*/}" -ge 16 ]; then
|
|
if [[ $name != *"@"* ]]; then
|
|
name="${name}@latest"
|
|
fi
|
|
|
|
GOROOT="$ASDF_INSTALL_PATH/go" \
|
|
GOPATH="$ASDF_INSTALL_PATH/packages" \
|
|
PATH="$go_path:$PATH" \
|
|
go install "$name" >/dev/null && rc=$? || rc=$?
|
|
else
|
|
GOROOT="$ASDF_INSTALL_PATH/go" \
|
|
GOPATH="$ASDF_INSTALL_PATH/packages" \
|
|
PATH="$go_path:$PATH" \
|
|
go get -u "$name" >/dev/null && rc=$? || rc=$?
|
|
fi
|
|
|
|
if [[ $rc -eq 0 ]]; then
|
|
msg "SUCCESS"
|
|
else
|
|
err "FAIL"
|
|
fi
|
|
done <"$default_go_pkgs"
|
|
}
|
|
|
|
install_golang "$ASDF_INSTALL_VERSION" "${ASDF_DOWNLOAD_PATH:-}" "$ASDF_INSTALL_PATH"
|
|
install_default_go_pkgs "$ASDF_INSTALL_PATH" "$ASDF_INSTALL_VERSION"
|