X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=golang%2Finstall.sh;h=2df6a91274c2b4a218b0822a6458039dc0d8e882;hb=refs%2Fremotes%2Forigin%2FHEAD;hp=51fd6598a03c6951b8c63ce5ad54c2b0f53c1a85;hpb=df64451d4c5aef17b0f52c9d35d290b27202be69;p=webi-installers%2F.git diff --git a/golang/install.sh b/golang/install.sh index 51fd659..2df6a91 100644 --- a/golang/install.sh +++ b/golang/install.sh @@ -1,3 +1,4 @@ +#!/bin/bash set -e set -u @@ -14,21 +15,24 @@ pkg_cmd_name="go" # # Their defaults are defined in _webi/template.sh at https://github.com/webinstall/packages -pkg_get_current_version() { +function pkg_get_current_version() { # 'go version' has output in this format: # go version go1.14.2 darwin/amd64 # This trims it down to just the version number: # 1.14.2 - echo "$(go version 2>/dev/null | head -n 1 | cut -d' ' -f3 | sed 's:go::')" + go version 2> /dev/null | + head -n 1 | + cut -d' ' -f3 | + sed 's:go::' } -pkg_format_cmd_version() { +function pkg_format_cmd_version() { # 'go v1.14.0' will be 'go1.14' my_version=$(echo "$1" | sed 's:\.0::g') echo "${pkg_cmd_name}${my_version}" } -pkg_link() { +function pkg_link() { # 'pkg_dst' will default to $HOME/.local/opt/go # 'pkg_src' will be the installed version, such as to $HOME/.local/opt/go-v1.14.2 rm -rf "$pkg_dst" @@ -43,8 +47,8 @@ pkg_link() { ln -s "$GOBIN_REAL" "$GOBIN" } -pkg_post_install() { - webi_link +function pkg_post_install() { + pkg_link # web_path_add is defined in _webi/template.sh at https://github.com/webinstall/packages # Updates PATH with @@ -53,14 +57,60 @@ pkg_post_install() { webi_path_add "$GOBIN/bin" # Install x go - echo "Building go extended tools (goimports, gorename, gotype, and stringer)" - "$pkg_dst_cmd" get golang.org/x/tools/cmd/goimports > /dev/null 2>/dev/null - "$pkg_dst_cmd" get golang.org/x/tools/cmd/gorename > /dev/null 2>/dev/null - "$pkg_dst_cmd" get golang.org/x/tools/cmd/gotype > /dev/null 2>/dev/null - "$pkg_dst_cmd" get golang.org/x/tools/cmd/stringer > /dev/null 2>/dev/null + echo "Building go language tools..." + export GO111MODULE=on + + # See https://pkg.go.dev/mod/golang.org/x/tools?tab=packages + + my_install="install" + # note: we intend a lexical comparison, so this is correct + #shellcheck disable=SC2072 + if [[ ${WEBI_VERSION} < "1.16" ]]; then + my_install="get" + fi + + echo "" + echo godoc + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/godoc@latest > /dev/null #2>/dev/null + + echo "" + echo gopls + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/gopls@latest > /dev/null #2>/dev/null + + echo "" + echo guru + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/guru@latest > /dev/null #2>/dev/null + + echo "" + echo golint + "$pkg_dst_cmd" "${my_install}" golang.org/x/lint/golint@latest > /dev/null #2>/dev/null + + echo "" + echo goimports + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/goimports@latest > /dev/null #2>/dev/null + + echo "" + echo gomvpkg + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/gomvpkg@latest > /dev/null #2>/dev/null + + echo "" + echo gorename + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/gorename@latest > /dev/null #2>/dev/null + + echo "" + echo gotype + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/gotype@latest > /dev/null #2>/dev/null + + echo "" + echo stringer + "$pkg_dst_cmd" "${my_install}" golang.org/x/tools/cmd/stringer@latest > /dev/null #2>/dev/null + + echo "" } -pkg_done_message() { - echo "Installed 'go' v$WEBI_VERSION to ~/.local/opt/go" - echo "Installed go 'x' tools to GOBIN=\$HOME/go/bin" +function pkg_done_message() { + echo "Installed 'go v$WEBI_VERSION' to ~/.local/opt/go" + # note: literal $HOME on purpose + #shellcheck disable=SC2016 + echo 'Installed go "x" tools to GOBIN=$HOME/go/bin' }