@@ -1100,6 +1100,58 @@ func prepForAnnualReportGeneration() error {
1100
1100
return nil
1101
1101
}
1102
1102
1103
+ func generateCNCFMaintainersList (ctx * Context ) error {
1104
+ maintainers := map [string ]Person {}
1105
+ serviceDesk := map [string ]bool {}
1106
+ for _ , group := range ctx .Committees {
1107
+ if group .Name == "Steering" {
1108
+ for _ , member := range group .Leadership .Chairs {
1109
+ maintainers [member .GitHub ] = member
1110
+ serviceDesk [member .GitHub ] = true
1111
+ }
1112
+ }
1113
+ }
1114
+ for _ , sig := range ctx .Sigs {
1115
+ // these groups retain service desk access in addition to steering
1116
+ // as outlined in https://github.com/kubernetes/steering/issues/281
1117
+ isServiceDesk := sig .Name == "Contributor Experience" || sig .Name == "K8s Infra" || sig .Name == "Release"
1118
+ for _ , chair := range sig .Leadership .Chairs {
1119
+ maintainers [chair .GitHub ] = chair
1120
+ // only set service desk true as needed, do not override to false
1121
+ // in case of maintainers spanning groups
1122
+ if isServiceDesk {
1123
+ serviceDesk [chair .Name ] = true
1124
+ }
1125
+ }
1126
+ for _ , tl := range sig .Leadership .TechnicalLeads {
1127
+ maintainers [tl .GitHub ] = tl
1128
+ // only set service desk true as needed, do not override to false
1129
+ // in case of maintainers spanning groups
1130
+ if isServiceDesk {
1131
+ serviceDesk [tl .Name ] = true
1132
+ }
1133
+ }
1134
+ }
1135
+ outputPath := filepath .Join (baseGeneratorDir , "maintainers.txt" )
1136
+ f , err := os .Create (outputPath )
1137
+ if err != nil {
1138
+ return err
1139
+ }
1140
+ defer f .Close ()
1141
+ fmt .Fprintln (f , "name | company | github | email | service-desk?" )
1142
+ fmt .Fprintln (f , "===============================================" )
1143
+ keys := []string {}
1144
+ for gh := range maintainers {
1145
+ keys = append (keys , gh )
1146
+ }
1147
+ sort .Strings (keys )
1148
+ for _ , gh := range keys {
1149
+ m := maintainers [gh ]
1150
+ fmt .Fprintf (f , "%s | %s | %s | %s | %t\n " , m .Name , m .Company , m .GitHub , m .Email , serviceDesk [m .GitHub ])
1151
+ }
1152
+ return nil
1153
+ }
1154
+
1103
1155
func main () {
1104
1156
yamlPath := filepath .Join (baseGeneratorDir , sigsYamlFile )
1105
1157
var ctx Context
@@ -1153,6 +1205,11 @@ func main() {
1153
1205
}
1154
1206
}
1155
1207
1208
+ if envVal , ok := os .LookupEnv ("MAINTAINERS_LIST" ); ok && envVal == "true" {
1209
+ fmt .Println ("Generating CNCF maintainers list" )
1210
+ generateCNCFMaintainersList (& ctx )
1211
+ }
1212
+
1156
1213
fmt .Println ("Generating sig-list.md" )
1157
1214
outputPath := filepath .Join (baseGeneratorDir , sigListOutput )
1158
1215
err = writeTemplate (filepath .Join (baseGeneratorDir , templateDir , listTemplate ), outputPath , "markdown" , ctx )
0 commit comments