Skip to content

Commit 0db6dbc

Browse files
Make repos defined in project.yml implicitly allowed
Repositories defined in project.yml should be allowed by default (even if omitted on allowed list) unless ignored explicitly.
1 parent 90a71e4 commit 0db6dbc

File tree

5 files changed

+23
-42
lines changed

5 files changed

+23
-42
lines changed

.github/newt_upgrade/allowed-ignored/expected.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ arm-CMSIS_5
44
mcuboot
55
nordic-nrfx
66
stm-stm32g4xx_hal_driver
7+
tinyusb
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Error: apache-mynewt-core repository must be allowed. Please add it to the allowed list and/or remove it from the ignored list.
1+
Error: apache-mynewt-core repository cannot be on ignored list.

.github/newt_upgrade/fail/core-not-allowed/expected.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

.github/newt_upgrade/fail/core-not-allowed/project.yml

Lines changed: 0 additions & 31 deletions
This file was deleted.

newt/project/project.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
195199
func (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.
438446
func (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,18 +729,17 @@ 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

732-
if !proj.isRepoAllowed("apache-mynewt-core") {
733-
return util.NewNewtError("apache-mynewt-core repository must be allowed. " +
734-
"Please add it to the allowed list and/or remove it from the ignored list.")
741+
if proj.isRepoIgnored("apache-mynewt-core") {
742+
return util.NewNewtError("apache-mynewt-core repository cannot be on ignored list.")
735743
}
736744

737745
// Local repository always included in initialization
@@ -754,6 +762,10 @@ func (proj *Project) loadConfig(download bool) error {
754762
fields, err := yc.GetValStringMapString(k, nil)
755763
util.OneTimeWarningError(err)
756764

765+
if proj.isRepoIgnored(repoName) {
766+
continue
767+
}
768+
757769
r, err := proj.loadRepo(repoName, fields)
758770
if err != nil {
759771
// if `repository.yml` does not exist, it is not an error; we

0 commit comments

Comments
 (0)