// DefaultGetPackage looks for the package; if it finds it, // it parses and returns it. If no package was found, it returns nil. func DefaultImporter(path string) *ast.Package { bpkg, err := build.Default.Import(path, "", 0) if err != nil { return nil } pkgs, err := parser.ParseDir(FileSet, bpkg.Dir, isGoFile, 0) if err != nil { if Debug { switch err := err.(type) { case scanner.ErrorList: for _, e := range err { debugp("\t%v: %s", e.Pos, e.Msg) } default: debugp("\terror parsing %s: %v", bpkg.Dir, err) } } return nil } if pkg := pkgs[bpkg.Name]; pkg != nil { return pkg } if Debug { debugp("package not found by ParseDir!") } return nil }
func parseDir(dir string) *ast.Package { pkgs, _ := parser.ParseDir(FileSet, dir, isGoFile, 0) if len(pkgs) == 0 { return nil } delete(pkgs, "documentation") for name, pkg := range pkgs { if len(pkgs) == 1 || name != "main" { return pkg } } return nil }