in internal/sync.go [631:658]
func getGroupUsersOperations(gGroupsUsers map[string][]*admin.User, awsGroupsUsers map[string][]*aws.User) (delete map[string][]*aws.User, equals map[string][]*aws.User) {
mbG := make(map[string]map[string]struct{})
// get user in google groups that are in aws groups and
// users in aws groups that aren't in google groups
for gGroupName, gGroupUsers := range gGroupsUsers {
mbG[gGroupName] = make(map[string]struct{})
for _, gUser := range gGroupUsers {
mbG[gGroupName][gUser.PrimaryEmail] = struct{}{}
}
}
delete = make(map[string][]*aws.User)
equals = make(map[string][]*aws.User)
for awsGroupName, awsGroupUsers := range awsGroupsUsers {
for _, awsUser := range awsGroupUsers {
// users that exist in aws groups but doesn't in google groups
if _, found := mbG[awsGroupName][awsUser.Username]; found {
equals[awsGroupName] = append(equals[awsGroupName], awsUser)
} else {
delete[awsGroupName] = append(delete[awsGroupName], awsUser)
}
}
}
return
}