From f9ce06b4c0708abfff13ff7cb910fd0cf08dd603 Mon Sep 17 00:00:00 2001 From: Sauyon Lee Date: Thu, 2 Sep 2021 00:13:54 -0700 Subject: [PATCH] Check for nil when getting package info --- extractor/extractor.go | 9 ++++++++- extractor/util/util.go | 10 ++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/extractor/extractor.go b/extractor/extractor.go index 50bf9d78c96..409ff8d7ae3 100644 --- a/extractor/extractor.go +++ b/extractor/extractor.go @@ -148,7 +148,14 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { for _, pkg := range pkgs { info := pkgInfos[pkg.PkgPath] - if info.PkgDir == "" { + if info == nil { + var err error + info, err = util.GetPkgInfo(pkg.PkgPath) + if err != nil { + log.Fatalf("Unable to get a source directory for input package %s: %s", pkg.PkgPath, err) + } + } + if info == nil || info.PkgDir == "" { log.Fatalf("Unable to get a source directory for input package %s.", pkg.PkgPath) } wantedRoots[info.PkgDir] = true diff --git a/extractor/util/util.go b/extractor/util/util.go index 90b5b5a6813..41b3d5ca434 100644 --- a/extractor/util/util.go +++ b/extractor/util/util.go @@ -114,6 +114,16 @@ func GetPkgsInfo(patterns []string, includingDeps bool, flags ...string) (map[st return pkgInfoMapping, nil } +// GetPkgsInfo gets the absolute module and package root directories for the package `pkg`, passing +// the internal `go list` command the flags specified by `flags`. +func GetPkgInfo(pkg string, flags ...string) (*PkgInfo, error) { + pkgInfos, err := GetPkgsInfo([]string{pkg}, false, flags...) + if err != nil { + return nil, err + } + return pkgInfos[pkg], nil +} + // DepErrors checks there are any errors resolving dependencies for `pkgpath`. It passes the `go // list` command the flags specified by `flags`. func DepErrors(pkgpath string, flags ...string) bool {