adb6d20cba153f1c37e42a45ef1d0c448cceb62b
[webi-installers/.git] / golang / install.sh
1 set -e
2 set -u
3
4 GOBIN="${HOME}/go"
5 GOBIN_REAL="${HOME}/.local/opt/go-bin-v${WEBI_VERSION}"
6
7 # The package is 'golang', but the command is 'go'
8 pkg_cmd_name="go"
9
10 # NOTE: pkg_* variables can be defined here
11 #       pkg_cmd_name
12 #       pkg_src, pkg_src_bin, pkg_src_cmd
13 #       pkg_dst, pkg_dst_bin, pkg_dst_cmd
14 #
15 # Their defaults are defined in _webi/template.sh at https://github.com/webinstall/packages
16
17 pkg_get_current_version() {
18     # 'go version' has output in this format:
19     #       go version go1.14.2 darwin/amd64
20     # This trims it down to just the version number:
21     #       1.14.2
22     echo "$(go version 2>/dev/null | head -n 1 | cut -d' ' -f3 | sed 's:go::')"
23 }
24
25 pkg_format_cmd_version() {
26     # 'go v1.14.0' will be 'go1.14'
27     my_version=$(echo "$1" | sed 's:\.0::g')
28     echo "${pkg_cmd_name}${my_version}"
29 }
30
31 pkg_link() {
32     # 'pkg_dst' will default to $HOME/.local/opt/go
33     # 'pkg_src' will be the installed version, such as to $HOME/.local/opt/go-v1.14.2
34     rm -rf "$pkg_dst"
35     ln -s "$pkg_src" "$pkg_dst"
36
37     # Go has a special $GOBIN
38
39     # 'GOBIN' is set above to "${HOME}/go"
40     # 'GOBIN_REAL' will be "${HOME}/.local/opt/go-bin-v${WEBI_VERSION}"
41     rm -rf "$GOBIN"
42     mkdir -p "$GOBIN_REAL/bin"
43     ln -s "$GOBIN_REAL" "$GOBIN"
44 }
45
46 pkg_post_install() {
47     pkg_link
48
49     # web_path_add is defined in _webi/template.sh at https://github.com/webinstall/packages
50     # Updates PATH with
51     #       "$HOME/.local/opt/go"
52     webi_path_add "$pkg_dst_bin"
53     webi_path_add "$GOBIN/bin"
54
55     # Install x go
56     echo "Building go language tools..."
57     export GO111MODULE=on
58
59     echo ""
60     echo gopls
61     "$pkg_dst_cmd" get golang.org/x/tools/gopls@latest > /dev/null #2>/dev/null
62
63     echo ""
64     echo guru
65     "$pkg_dst_cmd" get golang.org/x/tools/cmd/guru@latest > /dev/null #2>/dev/null
66
67     echo ""
68     echo golint
69     "$pkg_dst_cmd" get golang.org/x/lint/golint@latest > /dev/null #2>/dev/null
70
71     echo ""
72     echo goimports
73     "$pkg_dst_cmd" get golang.org/x/tools/cmd/goimports@latest > /dev/null #2>/dev/null
74
75     echo ""
76     echo gorename
77     "$pkg_dst_cmd" get golang.org/x/tools/cmd/gorename@latest > /dev/null #2>/dev/null
78
79     echo ""
80     echo gotype
81     "$pkg_dst_cmd" get golang.org/x/tools/cmd/gotype@latest > /dev/null #2>/dev/null
82
83     echo ""
84     echo stringer
85     "$pkg_dst_cmd" get golang.org/x/tools/cmd/stringer@latest > /dev/null #2>/dev/null
86
87     echo ""
88     echo golangci-lint
89     "$pkg_dst_cmd" get github.com/golangci/golangci-lint/cmd/golangci-lint@latest > /dev/null #2>/dev/null
90
91     echo ""
92 }
93
94 pkg_done_message() {
95     echo "Installed 'go' v$WEBI_VERSION to ~/.local/opt/go"
96     echo "Installed go 'x' tools to GOBIN=\$HOME/go/bin"
97 }