66 "path/filepath"
77 "regexp"
88 "runtime"
9- "strings"
109
1110 "github.com/spf13/cobra"
1211 "golang.org/x/sys/unix"
@@ -27,6 +26,33 @@ func getGolangVersion() string {
2726 return re .FindStringSubmatch (html )[1 ]
2827}
2928
29+ func installGoLang (prefix string ) {
30+ url := utils .Format ("https://go.dev/dl/go{ver}.{os}-{arch}.tar.gz" , map [string ]string {
31+ "ver" : getGolangVersion (),
32+ "os" : runtime .GOOS ,
33+ "arch" : utils .HostKernelArch (),
34+ })
35+ goTgz := utils .DownloadFile (url , "go_*.tar.gz" , true )
36+ cmd := utils .Format (`{prefix} rm -rf /usr/local/go \
37+ && {prefix} tar -C /usr/local/ -xzf {goTgz}\
38+ && {prefix} rm -rf /usr/local/go/pkg/*/cmd` ,
39+ map [string ]string {
40+ "prefix" : prefix ,
41+ "goTgz" : goTgz ,
42+ },
43+ )
44+ utils .RunCmd (cmd )
45+ }
46+
47+ func installGoLangCiLint (prefix string ) {
48+ script := "https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh"
49+ cmd := utils .Format (`curl -sSfL {script} | {prefix} sh -s -- -b /usr/local/bin` , map [string ]string {
50+ "script" : script ,
51+ "prefix" : prefix ,
52+ })
53+ utils .RunCmd (cmd )
54+ }
55+
3056// Install and configure Golang.
3157func golang (cmd * cobra.Command , args []string ) {
3258 prefix := utils .GetCommandPrefix (false , map [string ]uint32 {
@@ -36,27 +62,9 @@ func golang(cmd *cobra.Command, args []string) {
3662 })
3763 if utils .GetBoolFlag (cmd , "install" ) {
3864 switch runtime .GOOS {
39- case "windows" :
40- case "darwin" :
41- utils .BrewInstallSafe ([]string {"go" })
42- case "linux" :
43- ver := getGolangVersion ()
44- url := strings .ReplaceAll ("https://go.dev/dl/go{ver}.linux-amd64.tar.gz" , "{ver}" , ver )
45- goTgz := utils .DownloadFile (url , "go_*.tar.gz" , true )
46- cmd := utils .Format (`{prefix} rm -rf /usr/local/go \
47- && {prefix} tar -C /usr/local/ -xzf {goTgz}\
48- && {prefix} rm -rf /usr/local/go/pkg/*/cmd \
49- /usr/local/go/pkg/bootstrap \
50- /usr/local/go/pkg/obj \
51- /usr/local/go/pkg/tool/*/api \
52- /usr/local/go/pkg/tool/*/go_bootstrap \
53- /usr/local/go/src/cmd/dist/dist` ,
54- map [string ]string {
55- "prefix" : prefix ,
56- "goTgz" : goTgz ,
57- },
58- )
59- utils .RunCmd (cmd )
65+ case "darwin" , "linux" :
66+ installGoLang (prefix )
67+ installGoLangCiLint (prefix )
6068 default :
6169 log .Fatal ("The OS " , runtime .GOOS , " is not supported!" )
6270 }
0 commit comments