diff options
| author | Lubomir I. Ivanov <lubomirivanov@vmware.com> | 2020-01-23 04:44:02 +0200 |
|---|---|---|
| committer | Lubomir I. Ivanov <lubomirivanov@vmware.com> | 2020-01-23 04:44:02 +0200 |
| commit | 0d52e7b449bbbf6e1fe885069740b5a40fb97bbc (patch) | |
| tree | a7ddddc20e95d7f2c8178197d421c90234aceee2 /generator | |
| parent | ba5dd2e8c24715691ba21af956436df6d182e0b4 (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.tmpl | 11 | ||||
| -rw-r--r-- | generator/app.go | 23 |
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 |
