summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Crickenberger <spiffxp@gmail.com>2021-03-08 00:19:15 -0500
committerAaron Crickenberger <spiffxp@google.com>2021-03-09 14:12:03 -0500
commit320c5f10d6495cbdeb8b87ab9e8acd1b140db226 (patch)
tree57e309d0f96a12b6562526af2486f34304d6f15b
parent6687a0892a7a2bf94bf2c1f087ba23ccd750b244 (diff)
generator: add validation of subprojects
specifically: - only sigs+committees can have subprojects - subprojects need at least one owners entry - owners should be raw github links I think the last one could/should change, but: - I'm about to auto-generate links assuming this format, so I want to verify I can assume all owners are in this format - I am not quite sure if we should treat sigs.yaml as public api and give notice/deprecation for field changes
-rw-r--r--generator/app.go16
-rw-r--r--generator/testdata/sigs.yaml4
2 files changed, 20 insertions, 0 deletions
diff --git a/generator/app.go b/generator/app.go
index 3618f4dc..e48a123b 100644
--- a/generator/app.go
+++ b/generator/app.go
@@ -246,6 +246,7 @@ func (c *Context) Sort() {
func (c *Context) Validate() []error {
errors := []error{}
people := make(map[string]Person)
+ rawGitHubURL := regexp.MustCompile(regexRawGitHubURL)
for prefix, groups := range c.PrefixToGroupMap() {
for _, group := range groups {
expectedDir := group.DirName(prefix)
@@ -294,6 +295,21 @@ func (c *Context) Validate() []error {
errors = append(errors, fmt.Errorf("%s: has no subprojects", group.Dir))
}
}
+ if prefix != "committee" && prefix != "sig" {
+ if len(group.Subprojects) > 0 {
+ errors = append(errors, fmt.Errorf("%s: only sigs and committees can own code / have subprojects, found: %v", group.Dir, group.Subprojects))
+ }
+ }
+ for _, subproject := range group.Subprojects {
+ if len(subproject.Owners) == 0 {
+ errors = append(errors, fmt.Errorf("%s/%s: subproject has no owners", group.Dir, subproject.Name))
+ }
+ for _, ownerURL := range subproject.Owners {
+ if !rawGitHubURL.MatchString(ownerURL) {
+ errors = append(errors, fmt.Errorf("%s/%s: subproject owners should match regexp %s, found: %s", group.Dir, subproject.Name, regexRawGitHubURL, ownerURL))
+ }
+ }
+ }
}
}
return errors
diff --git a/generator/testdata/sigs.yaml b/generator/testdata/sigs.yaml
index 60474dda..191982fe 100644
--- a/generator/testdata/sigs.yaml
+++ b/generator/testdata/sigs.yaml
@@ -6,6 +6,8 @@ sigs:
mission_statement: covers foo
subprojects:
- name: sub-foo
+ owners:
+ - "https://raw.githubusercontent.com/org/foo/main/OWNERS"
- dir: sig-bar
name: Bar
label: bar
@@ -13,6 +15,8 @@ sigs:
mission_statement: owns areas related to bar
subprojects:
- name: sub-bar
+ owners:
+ - "https://raw.githubusercontent.com/org/bar/main/test/OWNERS"
workinggroups:
- dir: wg-baz
name: Baz