@@ -449,8 +449,34 @@ func LocalPackageSpecialName(dirName string) bool {
449449 return ok
450450}
451451
452+ func ReadPackage (repo * repo.Repo , pkgMap map [string ]interfaces.PackageInterface ,
453+ pkgPath string ) ([]string , error ) {
454+
455+ var warnings []string
456+
457+ pkg , err := LoadLocalPackage (repo , pkgPath )
458+ if err != nil {
459+ warnings = append (warnings , err .Error ())
460+ return warnings , nil
461+ }
462+
463+ if oldPkg , ok := pkgMap [pkg .Name ()]; ok {
464+ oldlPkg := oldPkg .(* LocalPackage )
465+ warnings = append (warnings ,
466+ fmt .Sprintf ("Multiple packages with same pkg.name=%s " +
467+ "in repo %s; path1=%s path2=%s" , oldlPkg .Name (), repo .Name (),
468+ oldlPkg .BasePath (), pkg .BasePath ()))
469+
470+ return warnings , nil
471+ }
472+
473+ pkgMap [pkg .Name ()] = pkg
474+
475+ return warnings , nil
476+ }
477+
452478func ReadLocalPackageRecursive (repo * repo.Repo ,
453- pkgList map [string ]interfaces.PackageInterface , basePath string ,
479+ pkgMap map [string ]interfaces.PackageInterface , basePath string ,
454480 pkgName string , searchedMap map [string ]struct {}) ([]string , error ) {
455481
456482 var warnings []string
@@ -465,7 +491,7 @@ func ReadLocalPackageRecursive(repo *repo.Repo,
465491 continue
466492 }
467493
468- subWarnings , err := ReadLocalPackageRecursive (repo , pkgList ,
494+ subWarnings , err := ReadLocalPackageRecursive (repo , pkgMap ,
469495 basePath , filepath .Join (pkgName , name ), searchedMap )
470496 warnings = append (warnings , subWarnings ... )
471497 if err != nil {
@@ -477,39 +503,21 @@ func ReadLocalPackageRecursive(repo *repo.Repo,
477503 return warnings , nil
478504 }
479505
480- pkg , err := LoadLocalPackage (repo , filepath .Join (basePath , pkgName ))
481- if err != nil {
482- warnings = append (warnings , err .Error ())
483- return warnings , nil
484- }
506+ var subWarnings []string
507+ subWarnings , err = ReadPackage (repo , pkgMap , filepath .Join (basePath , pkgName ))
508+ warnings = append (warnings , subWarnings ... )
485509
486- if oldPkg , ok := pkgList [pkg .Name ()]; ok {
487- oldlPkg := oldPkg .(* LocalPackage )
488- warnings = append (warnings ,
489- fmt .Sprintf ("Multiple packages with same pkg.name=%s " +
490- "in repo %s; path1=%s path2=%s" , oldlPkg .Name (), repo .Name (),
491- oldlPkg .BasePath (), pkg .BasePath ()))
492-
493- return warnings , nil
494- }
495-
496- pkgList [pkg .Name ()] = pkg
497-
498- return warnings , nil
510+ return warnings , err
499511}
500512
501- func ReadLocalPackages (repo * repo.Repo , basePath string ) (
502- * map [string ]interfaces.PackageInterface , []string , error ) {
503-
504- pkgMap := & map [string ]interfaces.PackageInterface {}
505-
513+ func ReadLocalPackages (repo * repo.Repo , pkgMap map [string ]interfaces.PackageInterface , basePath string ) ([]string , error ) {
506514 // Keep track of which directories we have traversed. Prevent infinite
507515 // loops caused by symlink cycles by not inspecting the same directory
508516 // twice.
509517 searchedMap := map [string ]struct {}{}
510518
511- warnings , err := ReadLocalPackageRecursive (repo , * pkgMap ,
519+ warnings , err := ReadLocalPackageRecursive (repo , pkgMap ,
512520 basePath , "" , searchedMap )
513521
514- return pkgMap , warnings , err
522+ return warnings , err
515523}
0 commit comments