/* This script was originally created to iterate over all open PRs to label and comment on specific PR errors (i.e. guide related filenmame syntax and frontmatter). Since the first run which covered over 10,000+ PRs, it is curently ran every couple of days for just the most recent PRs. To run the script for a specific range, run `node sweeper.js range startingPrNumber endingPrNumber` */ const { getPRs, getUserInput, getFiles } = require('../lib/get-prs'); const { ProcessingLog, rateLimiter } = require('../lib/utils'); const { labeler } = require('../lib/pr-tasks'); const log = new ProcessingLog('sweeper'); log.start(); console.log('Sweeper started...'); (async () => { const { totalPRs, firstPR, lastPR } = await getUserInput(); const prPropsToGet = ['number', 'labels', 'user']; const { openPRs } = await getPRs(totalPRs, firstPR, lastPR, prPropsToGet); let count = 0; if (openPRs.length) { console.log('Processing PRs...'); for (let i = 0; i < openPRs.length; i++) { let { number, labels: currentLabels, } = openPRs[i]; const prFiles = await getFiles(number); count++; const labelsAdded = await labeler( number, prFiles, currentLabels, ); const labelLogVal = labelsAdded.length ? labelsAdded : 'none added'; log.add(number, { number, labels: labelLogVal }); if (count > 4000) { await rateLimiter(2350); } } } })() .then(() => { log.finish(); console.log('Sweeper complete'); }) .catch(err => { log.finish(); console.log(err); });