export function groupPrs()

in src/common/pr-utils/grouping.ts [50:86]


export function groupPrs(prs: PrItem[], options: GroupPrOptions = {}): ReleaseNoteGroups<PrItem[]> {
  const groups = prs.reduce<ReleaseNoteGroups<PrItem[]>>(
    (groups, pr) => {
      // If the pr has no release_note label at all (should usually not happen)
      // it will be added to the missingLabel group, so we can warn about that in the UI.
      if (!pr.labels.some((label) => label.name?.startsWith('release_note:'))) {
        groups.missingLabel.push(pr);
        return groups;
      }

      for (const label of pr.labels) {
        switch (label.name) {
          case 'release_note:fix':
            groups.fixes.push(pr);
            break;
          case 'release_note:enhancement':
            groups.enhancements.push(pr);
            break;
          case 'release_note:deprecation':
            groups.deprecation.push(pr);
            break;
          case 'release_note:breaking':
            groups.breaking.push(pr);
            break;
          case 'release_note:feature':
            groups.features.push(pr);
            break;
        }
      }

      return groups;
    },
    { fixes: [], enhancements: [], features: [], deprecation: [], breaking: [], missingLabel: [] }
  );

  return groups;
}