(release: PlannedRelease, bumpFiles: BumpFile[])
| 104 | } |
| 105 | |
| 106 | export function buildReleaseBody(release: PlannedRelease, bumpFiles: BumpFile[]): string { |
| 107 | const lines: string[] = []; |
| 108 | const relevant = bumpFiles.filter((bf) => release.bumpFiles.includes(bf.id)); |
| 109 | |
| 110 | if (relevant.length > 0) { |
| 111 | for (const bf of relevant) { |
| 112 | if (bf.summary) { |
| 113 | lines.push(`- ${bf.summary.split('\n')[0]}`); |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | if (relevant.length === 0) { |
| 119 | const sourceList = release.bumpSources.map((s) => `\`${s.name}\` v${s.newVersion}`).join(', '); |
| 120 | if (release.isDependencyBump) { |
| 121 | lines.push(sourceList ? `- Updated dependency ${sourceList}` : '- Updated dependencies'); |
| 122 | } else if (release.isGroupBump) { |
| 123 | lines.push(sourceList ? `- Version bump from group with ${sourceList}` : '- Version bump from group'); |
| 124 | } else if (release.isCascadeBump) { |
| 125 | lines.push(sourceList ? `- Version bump from ${sourceList}` : '- Version bump via cascade rule'); |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | return lines.join('\n') || 'No changelog entries.'; |
| 130 | } |
| 131 | |
| 132 | export function isGhAvailable(): boolean { |
| 133 | return tryRunArgs(['gh', '--version']) !== null; |
no outgoing calls
no test coverage detected
searching dependent graphs…