@@ -192,6 +192,10 @@ func (proj *Project) patternsMatch(patterns *[]*regexp.Regexp, repoName string)
192192 return false
193193}
194194
195+ func (proj * Project ) isRepoIgnored (repoName string ) bool {
196+ return proj .patternsMatch (& proj .reposIgnoredRe , repoName )
197+ }
198+
195199func (proj * Project ) isRepoAllowed (repoName string ) bool {
196200 if (len (proj .reposAllowedRe ) == 0 ) || proj .patternsMatch (& proj .reposAllowedRe , repoName ) {
197201 return ! proj .patternsMatch (& proj .reposIgnoredRe , repoName )
@@ -219,6 +223,10 @@ func (proj *Project) GetPkgRepos() error {
219223 fields , err := pkg .PkgConfig ().GetValStringMapString (k , nil )
220224 util .OneTimeWarningError (err )
221225
226+ if ! proj .isRepoAllowed (repoName ) {
227+ continue
228+ }
229+
222230 r , err := proj .loadRepo (repoName , fields )
223231 if err != nil {
224232 // if `repository.yml` does not exist, it is not an error; we
@@ -437,10 +445,6 @@ func (proj *Project) InfoIf(predicate func(r *repo.Repo) bool,
437445// @return error Error on failure.
438446func (proj * Project ) loadRepo (name string , fields map [string ]string ) (
439447 * repo.Repo , error ) {
440-
441- if ! proj .isRepoAllowed (name ) {
442- return nil , nil
443- }
444448 // First, read the repo description from the supplied fields.
445449 if fields ["type" ] == "" {
446450 return nil ,
@@ -523,6 +527,11 @@ func (proj *Project) loadRepoDeps(download bool) error {
523527 depRepo := proj .repos [dep .Name ]
524528 if depRepo == nil {
525529 var err error
530+
531+ if ! proj .isRepoAllowed (dep .Name ) {
532+ continue
533+ }
534+
526535 depRepo , err = proj .loadRepo (dep .Name , dep .Fields )
527536 if err != nil {
528537 // if `repository.yml` does not exist, it is not an
@@ -720,13 +729,13 @@ func (proj *Project) loadConfig(download bool) error {
720729
721730 reposAllowed , err = yc .GetValStringSlice ("project.repositories.allowed" , nil )
722731 util .OneTimeWarningError (err )
723- proj .reposAllowedRe , err = proj .createRegexpPatterns (reposAllowed )
732+ proj .reposAllowedRe , err = proj .createRegexpPatterns (util . UniqueStrings ( reposAllowed ) )
724733 util .OneTimeWarningError (err )
725734
726735 reposIgnored , err = yc .GetValStringSlice ("project.repositories.ignored" , nil )
727736 util .OneTimeWarningError (err )
728737 reposIgnored = append (reposIgnored , newtutil .NewtIgnore ... )
729- proj .reposIgnoredRe , err = proj .createRegexpPatterns (reposIgnored )
738+ proj .reposIgnoredRe , err = proj .createRegexpPatterns (util . UniqueStrings ( reposIgnored ) )
730739 util .OneTimeWarningError (err )
731740
732741 if ! proj .isRepoAllowed ("apache-mynewt-core" ) {
@@ -754,6 +763,10 @@ func (proj *Project) loadConfig(download bool) error {
754763 fields , err := yc .GetValStringMapString (k , nil )
755764 util .OneTimeWarningError (err )
756765
766+ if proj .isRepoIgnored (repoName ) {
767+ continue
768+ }
769+
757770 r , err := proj .loadRepo (repoName , fields )
758771 if err != nil {
759772 // if `repository.yml` does not exist, it is not an error; we
0 commit comments