docs: add -- global flag
[webi-installers/.git] / golang / install.sh
index 30edb69aa68ec74c22ec67406dfced812a7545d0..2df6a91274c2b4a218b0822a6458039dc0d8e882 100644 (file)
@@ -1,3 +1,4 @@
+#!/bin/bash
 set -e
 set -u
 
@@ -12,23 +13,26 @@ pkg_cmd_name="go"
 #       pkg_src, pkg_src_bin, pkg_src_cmd
 #       pkg_dst, pkg_dst_bin, pkg_dst_cmd
 #
-# Their defaults are defined in webi/template.bash at https://github.com/webinstall/packages
+# 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,24 +47,70 @@ 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.bash at https://github.com/webinstall/packages
+    # web_path_add is defined in _webi/template.sh at https://github.com/webinstall/packages
     # Updates PATH with
     #       "$HOME/.local/opt/go"
     webi_path_add "$pkg_dst_bin"
     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'
 }