asdf-golang/bin/install
Kenny Parnell b1990b0a23
Add bin/download per latest asdf guidelines (#45)
- Creates a temporary directory if using an older version of asdf.
- Install delegates to bin/download if using an older version of asdf.
2021-01-04 17:36:54 -05:00

67 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"
my_mktemp () {
local tempdir=""
local platform=""
platform="$(get_platform)"
if [ "linux" = "$platform" ] ; then
tempdir=$(mktemp -d asdf-golang.XXXX)
else
tempdir=$(mktemp -dt asdf-golang.XXXX)
fi
echo -n "$tempdir"
}
install_golang () {
local version="$1"
local download_path="$2"
local install_path="$3"
if [ -z "$download_path" ] ; then
download_path="$(my_mktemp)"
ASDF_INSTALL_VERSION="$version" ASDF_DOWNLOAD_PATH="$download_path" "$PLUGIN_DIR/bin/download"
fi
tar -C "$install_path" -xzf "${download_path}/archive.tar.gz"
}
install_default_go_pkgs() {
local go_path="$1/go/bin"
local default_go_pkgs="${HOME}/.default-golang-pkgs"
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
GOROOT="$ASDF_INSTALL_PATH/go" \
GOPATH="$ASDF_INSTALL_PATH/packages" \
PATH="$go_path:$PATH" \
go get -u "$name" > /dev/null && rc=$? || rc=$?
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"