func generateSetAccessRequest()

in pkg/client/gerrit/project_access.go [69:101]


func generateSetAccessRequest(permissions []AccessInfo, added, modified bool) map[string]reference {
	refs := make(map[string]reference)

	for _, perm := range permissions {
		_, ok := refs[perm.RefPattern]
		if !ok {
			ref := reference{Permissions: make(map[string]permission)}
			refs[perm.RefPattern] = ref
		}

		_, ok = refs[perm.RefPattern].Permissions[perm.PermissionName]
		if !ok {
			permName := permission{Rules: make(map[string]groupPermissions), Label: perm.PermissionLabel}
			refs[perm.RefPattern].Permissions[perm.PermissionName] = permName
		}

		_, ok = refs[perm.RefPattern].Permissions[perm.PermissionName].Rules[perm.GroupName]
		if !ok {
			groupPerm := groupPermissions{
				Action:   perm.Action,
				Force:    perm.Force,
				Max:      perm.Max,
				Min:      perm.Min,
				Added:    added,
				Modified: modified,
			}

			refs[perm.RefPattern].Permissions[perm.PermissionName].Rules[perm.GroupName] = groupPerm
		}
	}

	return refs
}