in internal/genv/main.go [130:151]
func golangOrgDlRoot() (string, error) {
cmd := exec.Command("go", "list", "-m", "-json")
cmd.Env = append(os.Environ(), "GO111MODULE=on")
out, err := cmd.Output()
if ee := (*exec.ExitError)(nil); errors.As(err, &ee) {
return "", fmt.Errorf("go command exited unsuccessfully: %v\n%s", ee.ProcessState.String(), ee.Stderr)
} else if err != nil {
return "", err
}
var mod struct {
Path string // Module path.
Dir string // Directory holding files for this module.
}
err = json.Unmarshal(out, &mod)
if err != nil {
return "", err
}
if mod.Path != "golang.org/dl" {
return "", fmt.Errorf("working directory must be in module golang.org/dl, but 'go list -m' reports it's currently in module %s", mod.Path)
}
return mod.Dir, nil
}