in pkg/golang/install.go [81:111]
func installGoVersion(v, pth string) error {
if s, err := os.Stat(pth); err != nil && !os.IsNotExist(err) {
return err
} else if err == nil {
if s.IsDir() {
glog.Infof("Found existing go %s at %s", v, pth)
return nil
}
return fmt.Errorf("expected %s to be a directory", pth)
}
glog.Infof("Installing go %s to %s", v, pth)
tmpPath, err := ioutil.TempDir(os.Getenv("GOPATH"), "go-tmp-")
if err != nil {
return err
}
defer os.RemoveAll(tmpPath)
cmd := exec.Command("/bin/bash", "-c", fmt.Sprintf("curl -SLf https://storage.googleapis.com/golang/go%s.linux-amd64.tar.gz | tar -xz --strip 1 -C %s", v, tmpPath))
cmd.Dir = tmpPath
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return fmt.Errorf("command %q failed: %v", strings.Join(cmd.Args, " "), err)
}
if err := os.Rename(tmpPath, pth); err != nil {
return err
}
return nil
}