in groups/service.go [209:264]
func (as *adminService) CreateOrUpdateGroupIfNescessary(group GoogleGroup) error {
if *verbose {
log.Printf("adminService.CreateOrUpdateGroupIfNecessary %s", group.EmailId)
}
grp, err := as.client.GetGroup(group.EmailId)
if err != nil {
if as.checkForAPIErr404(err) {
if !config.ConfirmChanges {
log.Printf("dry-run: would create group %q\n", group.EmailId)
} else {
log.Printf("Trying to create group: %q\n", group.EmailId)
g := admin.Group{
Email: group.EmailId,
}
if group.Name != "" {
g.Name = group.Name
}
if group.Description != "" {
g.Description = group.Description
}
g4, err := as.client.InsertGroup(&g)
if err != nil {
return fmt.Errorf("unable to add new group %q: %w", group.EmailId, err)
}
log.Printf("> Successfully created group %s\n", g4.Email)
}
} else {
return fmt.Errorf("unable to fetch group %q: %w", group.EmailId, err)
}
} else {
if group.Name != "" && grp.Name != group.Name ||
group.Description != "" && grp.Description != group.Description {
if !config.ConfirmChanges {
log.Printf("dry-run: would update group name/description %q\n", group.EmailId)
} else {
log.Printf("Trying to update group: %q\n", group.EmailId)
g := admin.Group{
Email: group.EmailId,
}
if group.Name != "" {
g.Name = group.Name
}
if group.Description != "" {
g.Description = group.Description
}
g4, err := as.client.UpdateGroup(group.EmailId, &g)
if err != nil {
return fmt.Errorf("unable to update group %q: %w", group.EmailId, err)
}
log.Printf("> Successfully updated group %s\n", g4.Email)
}
}
}
return nil
}