Files
vim-ale/go-essentials/install.sh
2024-09-13 08:33:34 +00:00

85 lines
2.1 KiB
Bash

#!/bin/sh
set -e
set -u
__run_go_essentials() {
if ! command -v go > /dev/null; then
"$HOME/.local/bin/webi" "go@${WEBI_TAG}"
fi
export PATH="$HOME/.local/opt/go/bin:$PATH"
my_install="install"
# go1.16 is the min version for proper 'go install'
my_version="$(
go version | cut -d' ' -f3
)"
my_major="$(
echo "${my_version}" | cut -d'.' -f1 || echo '0'
)"
my_minor="$(
echo "${my_version}" | cut -d'.' -f2 || echo '0'
)"
my_install="get"
if [ "${my_major}" = "go1" ]; then
if [ "${my_minor}" -ge 16 ]; then
my_install="install"
fi
elif [ "${my_major}" = "go2" ]; then
my_install="install"
fi
# Install x go
echo "Building go language tools..."
export GO111MODULE=on
# See https://pkg.go.dev/mod/golang.org/x/tools?tab=packages
echo ""
echo godoc
go "${my_install}" golang.org/x/tools/cmd/godoc@latest > /dev/null #2>/dev/null
echo ""
echo gopls
go "${my_install}" golang.org/x/tools/gopls@latest > /dev/null #2>/dev/null
echo ""
echo golint
go "${my_install}" golang.org/x/lint/golint@latest > /dev/null #2>/dev/null
echo ""
echo goimports
go "${my_install}" golang.org/x/tools/cmd/goimports@latest > /dev/null #2>/dev/null
echo ""
echo gomvpkg
go "${my_install}" golang.org/x/tools/cmd/gomvpkg@latest > /dev/null #2>/dev/null
echo ""
echo gorename
go "${my_install}" golang.org/x/tools/cmd/gorename@latest > /dev/null #2>/dev/null
echo ""
echo gotype
go "${my_install}" golang.org/x/tools/cmd/gotype@latest > /dev/null #2>/dev/null
echo ""
echo stringer
go "${my_install}" golang.org/x/tools/cmd/stringer@latest > /dev/null #2>/dev/null
echo ""
# literal $HOME on purpose
# shellcheck disable=SC2016
echo 'Installed go "x" tools to GOBIN=$HOME/go/bin'
printf '\n'
printf 'Suggestion: Also check out these great productivity multipliers:\n'
printf '\n'
printf ' - vim-essentials (sensible defaults for vim)\n'
printf ' - vim-go (golang linting, etc)\n'
printf '\n'
}
__run_go_essentials