58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								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);
							 | 
						||
| 
								 | 
							
								  });
							 |