in internal/sync.go [559:589]
func getGroupOperations(awsGroups []*aws.Group, googleGroups []*admin.Group) (add []*aws.Group, delete []*aws.Group, equals []*aws.Group) {
awsMap := make(map[string]*aws.Group)
googleMap := make(map[string]struct{})
for _, awsGroup := range awsGroups {
awsMap[awsGroup.DisplayName] = awsGroup
}
for _, gGroup := range googleGroups {
googleMap[gGroup.Name] = struct{}{}
}
// AWS Groups found and not found in google
for _, gGroup := range googleGroups {
if _, found := awsMap[gGroup.Name]; found {
equals = append(equals, awsMap[gGroup.Name])
} else {
add = append(add, aws.NewGroup(gGroup.Name))
}
}
// Google Groups founds and not in aws
for _, awsGroup := range awsGroups {
if _, found := googleMap[awsGroup.DisplayName]; !found {
delete = append(delete, aws.NewGroup(awsGroup.DisplayName))
}
}
return add, delete, equals
}