(releaseNotes)
| 7 | * Into [{ version, patches: [ {notes, intro, date, sections... }] }] |
| 8 | */ |
| 9 | export function formatReleases(releaseNotes) { |
| 10 | // Get release note numbers in dot notation and sort from highest to lowest. |
| 11 | const sortedReleaseNumbers = Object.keys(releaseNotes) |
| 12 | .reverse() |
| 13 | .map((r) => r.replace(/-/g, '.')) |
| 14 | |
| 15 | return sortedReleaseNumbers.map((releaseNumber) => { |
| 16 | const notesPerVersion = releaseNotes[releaseNumber.replace(/\./g, '-')] |
| 17 | const patches = Object.keys(notesPerVersion) |
| 18 | .filter((patchNumber) => !notesPerVersion[patchNumber].deprecated) |
| 19 | .map((patchNumber) => { |
| 20 | // Change version-rc1 to version-rc.1 to make these proper semver RC versions. |
| 21 | const patchNumberSemver = patchNumber.replace(/rc/, 'rc.') |
| 22 | return { |
| 23 | version: `${releaseNumber}.${patchNumberSemver}`, |
| 24 | patchVersion: patchNumberSemver, |
| 25 | downloadVersion: `${releaseNumber}.${patchNumber.replace(/-rc\d*$/, '')}`, // Remove RC |
| 26 | release: releaseNumber, |
| 27 | ...notesPerVersion[patchNumber], |
| 28 | } |
| 29 | }) |
| 30 | .sort((a, b) => semver.compare(b.version, a.version)) |
| 31 | |
| 32 | return { |
| 33 | version: releaseNumber, |
| 34 | patches, |
| 35 | } |
| 36 | }) |
| 37 | } |
| 38 | |
| 39 | /** |
| 40 | * Render each note in the given patch, by looping through the |
no outgoing calls
no test coverage detected