summaryrefslogtreecommitdiff
path: root/generator
diff options
context:
space:
mode:
authorLubomir I. Ivanov <lubomirivanov@vmware.com>2020-01-23 04:44:02 +0200
committerLubomir I. Ivanov <lubomirivanov@vmware.com>2020-01-23 04:44:02 +0200
commit0d52e7b449bbbf6e1fe885069740b5a40fb97bbc (patch)
treea7ddddc20e95d7f2c8178197d421c90234aceee2 /generator
parentba5dd2e8c24715691ba21af956436df6d182e0b4 (diff)
generator/app: add means for sorted and de-duped OWNERS_ALIASES
- Add LeadershipGroup#Owners() which returns a sorted and de-duped list of owners ([]Person) for this LeadershipGroup by combining Chairs and TechnicalLeads - The function is used in generator/aliases.tmpl - Update OWNERS_ALIASES with the new results
Diffstat (limited to 'generator')
-rw-r--r--generator/aliases.tmpl11
-rw-r--r--generator/app.go23
2 files changed, 27 insertions, 7 deletions
diff --git a/generator/aliases.tmpl b/generator/aliases.tmpl
index 52a7176e..cfef01ce 100644
--- a/generator/aliases.tmpl
+++ b/generator/aliases.tmpl
@@ -1,28 +1,25 @@
aliases:
{{- range .Sigs}}
{{.Dir}}-leads:
- {{- range .Leadership.Chairs}}
- - {{.GitHub}}
- {{- end}}
- {{- range .Leadership.TechnicalLeads}}
+ {{- range .Leadership.Owners}}
- {{.GitHub}}
{{- end}}
{{- end}}
{{- range .WorkingGroups}}
{{.Dir}}-leads:
- {{- range .Leadership.Chairs}}
+ {{- range .Leadership.Owners}}
- {{.GitHub}}
{{- end}}
{{- end}}
{{- range .UserGroups}}
{{.Dir}}-leads:
- {{- range .Leadership.Chairs}}
+ {{- range .Leadership.Owners}}
- {{.GitHub}}
{{- end}}
{{- end}}
{{- range .Committees}}
{{.Dir}}:
- {{- range .Leadership.Chairs}}
+ {{- range .Leadership.Owners}}
- {{.GitHub}}
{{- end}}
{{- end}}
diff --git a/generator/app.go b/generator/app.go
index 5171df2f..8a4d6fd2 100644
--- a/generator/app.go
+++ b/generator/app.go
@@ -122,6 +122,29 @@ func (g *LeadershipGroup) PrefixToPersonMap() map[string][]Person {
}
}
+// Owners returns a sorted and de-duped list of owners for a LeadershipGroup
+func (g *LeadershipGroup) Owners() []Person {
+ o := append(g.Chairs, g.TechnicalLeads...)
+
+ // Sort
+ sort.Slice(o, func(i, j int) bool {
+ return o[i].GitHub < o[j].GitHub
+ })
+
+ // De-dupe
+ seen := make(map[string]struct{}, len(o))
+ i := 0
+ for _, p := range o {
+ if _, ok := seen[p.GitHub]; ok {
+ continue
+ }
+ seen[p.GitHub] = struct{}{}
+ o[i] = p
+ i++
+ }
+ return o[:i]
+}
+
// Group represents either a Special Interest Group (SIG) or a Working Group (WG)
type Group struct {
Dir string