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
}