diff --git a/tools/driver/packages/packages.go b/tools/driver/packages/packages.go index bcf0dddc..7edde8b4 100644 --- a/tools/driver/packages/packages.go +++ b/tools/driver/packages/packages.go @@ -191,6 +191,16 @@ func packagesToResponse(rootpath string, pkgs []*packages.Package, dirs map[stri }, nil } +func plz(args ...string) *exec.Cmd { + cmd := exec.Command("plz", args...) + if term.IsTerminal(int(os.Stderr.Fd())) { + cmd.Stderr = &bytes.Buffer{} + } else { + cmd.Stderr = os.Stderr + } + return cmd +} + func findFile(rootpath, file string) string { if pathExists(file) { return filepath.Join(rootpath, file) @@ -220,16 +230,6 @@ func loadPackageInfo(files []string, mode packages.LoadMode) ([]*packages.Packag if len(files) == 0 { return []*packages.Package{}, nil } - isTerminal := term.IsTerminal(int(os.Stderr.Fd())) - plz := func(args ...string) *exec.Cmd { - cmd := exec.Command("plz", args...) - if !isTerminal { - cmd.Stderr = &bytes.Buffer{} - } else { - cmd.Stderr = os.Stderr - } - return cmd - } r1, w1, err := os.Pipe() if err != nil { @@ -362,6 +362,12 @@ func handleSubprocessErr(cmd *exec.Cmd, err error) error { // directoriesToFiles expands any directories in the given list to files in that directory. func directoriesToFiles(in []string, includeTests bool) ([]string, error) { files := make([]string, 0, len(in)) + experimentalCmd := plz("query", "config", "parse.ExperimentalDir") + experimentalDir, err := experimentalCmd.Output() + if err != nil { + return nil, handleSubprocessErr(experimentalCmd, err) + } + for _, x := range in { if strings.HasSuffix(x, "/...") { // We could turn this into a `/...` style thing for plz but we also need to know the @@ -370,7 +376,7 @@ func directoriesToFiles(in []string, includeTests bool) ([]string, error) { if err != nil { return err } - if d.Name() == "plz-out" { + if d.Name() == "plz-out" || d.Name() == strings.TrimSpace(string(experimentalDir)) { return filepath.SkipDir } if strings.HasSuffix(path, ".go") && (d.Type()&fs.ModeSymlink) == 0 {