func LoadRegistryVersions()

in app/registry/list.go [94:128]


func LoadRegistryVersions(ctx context.Context, gerritService gerrit.ServiceInterface, cbs []codebase.Codebase) error {
	mrs, err := gerritService.GetMergeRequests(ctx)
	if err != nil {
		return errors.Wrap(err, "unable to get merge requests")
	}

	registryMrs := make(map[string][]gerrit.GerritMergeRequest)

	for _, v := range mrs {
		registryMrs[v.Spec.ProjectName] = append(registryMrs[v.Spec.ProjectName], v)
	}

	for i, cb := range cbs {
		registryVersion := BranchVersion(cb.Spec.DefaultBranch)
		if cb.Spec.BranchToCopyInDefaultBranch != "" {
			registryVersion = BranchVersion(cb.Spec.BranchToCopyInDefaultBranch)
		}

		currentRegistryMrs := registryMrs[cb.Name]
		for _, mr := range currentRegistryMrs {
			if (mr.Labels[MRLabelTarget] == MRTargetRegistryVersionUpdate ||
				mr.Labels[MRLabelTarget] == MRTargetClusterUpdate) && mr.Status.Value == gerrit.StatusMerged {
				mergedBranchVersion := BranchVersion(mr.Spec.SourceBranch)
				if registryVersion.LessThan(mergedBranchVersion) {
					registryVersion = mergedBranchVersion
				}
			}
		}

		cbs[i].Version = registryVersion
		cbs[i].Spec.DefaultBranch = registryVersion.String()
	}

	return nil
}