1// this script loads all merged PRs within the given page range 2// it can be used to update the CHANGELOG.md file in a semi-automated way 3// the problem: codeberg doesn't support loading merged PRs, so we have to filter them in memory 4// luckily, we can sort after "recentupdate", which means we can do incremental changelog generation 5// todo: support setting a "last_updated" date, so the script would automatically check how far it has to go 6 7async function main() { 8 let pageStart = 1; 9 let pageEnd = 1; 10 let prs = []; 11 for (let p = pageStart; p <= pageEnd; p++) { 12 console.log(`load page ${p}/${pageEnd}`); 13 const res = await fetch( 14 `https://codeberg.org/api/v1/repos/uzu/strudel/pulls?state=closed&sort=recentupdate&page=${p}`, 15 ); 16 const pulls = await res.json(); 17 const merged = pulls.filter((pull) => pull.merged); 18 prs = prs.concat(merged); 19 } 20 const output = prs 21 .sort((a, b) => new Date(b.closed_at) - new Date(a.closed_at)) 22 .map( 23 (pull) => `- ${pull.closed_at} ${pull.title} by @${pull.user.login || '?'} in: [#${pull.number}](${pull.url}) `, 24 ) 25 .join('\n'); 26 console.log('-------------'); 27 console.log(output); 28} 29 30main();