func golangOrgDlRoot()

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
}