in groups/reconcile.go [281:338]
func (r *Reconciler) printGroupMembersAndSettings() error {
g, err := r.adminService.ListGroups()
if err != nil {
return fmt.Errorf("unable to retrieve users in domain: %w", err)
}
var groupsConfig GroupsConfig
for _, g := range g.Groups {
group := GoogleGroup{
EmailId: g.Email,
Name: g.Name,
Description: g.Description,
}
g2, err := r.groupService.Get(g.Email)
if err != nil {
return fmt.Errorf("unable to retrieve group info for group %s: %w", g.Email, err)
}
group.Settings = make(map[string]string)
group.Settings["AllowExternalMembers"] = g2.AllowExternalMembers
group.Settings["WhoCanJoin"] = g2.WhoCanJoin
group.Settings["WhoCanViewMembership"] = g2.WhoCanViewMembership
group.Settings["WhoCanViewGroup"] = g2.WhoCanViewGroup
group.Settings["WhoCanDiscoverGroup"] = g2.WhoCanDiscoverGroup
group.Settings["WhoCanInvite"] = g2.WhoCanInvite
group.Settings["WhoCanAdd"] = g2.WhoCanAdd
group.Settings["WhoCanApproveMembers"] = g2.WhoCanApproveMembers
group.Settings["WhoCanModifyMembers"] = g2.WhoCanModifyMembers
group.Settings["WhoCanModerateMembers"] = g2.WhoCanModerateMembers
group.Settings["MembersCanPostAsTheGroup"] = g2.MembersCanPostAsTheGroup
l, err := r.adminService.ListMembers(g.Email)
if err != nil {
return fmt.Errorf("unable to retrieve members in group : %w", err)
}
for _, m := range l {
switch m.Role {
case OwnerRole:
group.Owners = append(group.Owners, m.Email)
case ManagerRole:
group.Managers = append(group.Managers, m.Email)
case MemberRole:
group.Members = append(group.Members, m.Email)
}
}
groupsConfig.Groups = append(groupsConfig.Groups, group)
}
cm := genyaml.NewCommentMap("reconcile.go")
yamlSnippet, err := cm.GenYaml(groupsConfig)
if err != nil {
return fmt.Errorf("unable to generate yaml for groups : %w", err)
}
fmt.Println(yamlSnippet)
return nil
}