diff --git a/cmd/importverifier/importverifier.go b/cmd/importverifier/importverifier.go index c73dad68c2a..3d32c3bde93 100644 --- a/cmd/importverifier/importverifier.go +++ b/cmd/importverifier/importverifier.go @@ -230,9 +230,26 @@ func loadImportRestrictions(configFile string) ([]ImportRestriction, error) { } func resolvePackageTree(treeBase string) ([]Package, error) { + // try resolving with $cwd + packages, err := resolvePackageTreeInDir("", treeBase) + if err != nil || len(packages) == 0 { + // if that fails or finds no packages, resolve under ./vendor/$treeBase + stagingPackages, stagingErr := resolvePackageTreeInDir(filepath.Join("./vendor", treeBase), treeBase) + if stagingErr == nil && len(stagingPackages) > 0 { + // if that succeeds, return + return stagingPackages, stagingErr + } + } + // otherwise, return original packages and error + return packages, err +} + +func resolvePackageTreeInDir(dir string, treeBase string) ([]Package, error) { cmd := "go" args := []string{"list", "-json", fmt.Sprintf("%s...", treeBase)} - stdout, err := exec.Command(cmd, args...).Output() + c := exec.Command(cmd, args...) + c.Dir = dir + stdout, err := c.Output() if err != nil { var message string if ee, ok := err.(*exec.ExitError); ok {