func()

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
}