| 177 | } |
| 178 | |
| 179 | func switchVersion(vname string) error { |
| 180 | targetV := filepath.Join(versionsDir, vname) |
| 181 | |
| 182 | // Recreate symbolic link |
| 183 | _ = os.Remove(goroot) |
| 184 | |
| 185 | if err := mkSymlink(targetV, goroot); err != nil { |
| 186 | return errors.WithStack(err) |
| 187 | } |
| 188 | if output, err := exec.Command(filepath.Join(goroot, "bin", "go"), "version").Output(); err == nil { |
| 189 | fmt.Printf("Now using %s", strings.TrimPrefix(string(output), "go version ")) |
| 190 | } |
| 191 | return nil |
| 192 | } |
| 193 | |
| 194 | func mkSymlink(oldname, newname string) (err error) { |
| 195 | if runtime.GOOS == "windows" { |