closed.js (3537B)
1 import fs from 'fs'; 2 import path from 'path'; 3 4 import { db } from '../index.js'; 5 6 const ignoreLabels = ['maintainer']; 7 const mergedPRs = fs.readFileSync( 8 path.join(import.meta.dirname, '../message/merged.md'), 9 'utf8' 10 ); 11 const removableLabelPrefixes = ['status:', 'reason:']; 12 const reviewerUsernames = [ 13 'DEV-DIBSTER', 14 'dragsbruh', 15 'iostpa', 16 'notamitgamer', 17 'orangci', 18 'satr14washere', 19 'Stef-00012', 20 'wdhdev', 21 'Yunexiz', 22 'FWEEaaaa1', 23 'MaskDuck', 24 'ok-coder1', 25 'virtualWinter', 26 ]; 27 28 export async function closed( 29 appOctokit, 30 prMerged, 31 repoOwner, 32 repoName, 33 repoFullName, 34 prNumber, 35 prUsername, 36 prSender 37 ) { 38 if (prMerged === true) { 39 const labels = await appOctokit.rest.issues.listLabelsOnIssue({ 40 owner: repoOwner, 41 repo: repoName, 42 issue_number: prNumber, 43 }); 44 const allLabels = labels.data.map((label) => label.name); 45 if (ignoreLabels.some((label) => allLabels.includes(label))) { 46 return; 47 } 48 await appOctokit.rest.issues.createComment({ 49 owner: repoOwner, 50 repo: repoName, 51 issue_number: prNumber, 52 body: mergedPRs, 53 }); 54 console.log( 55 `Sent a merged message to #${prNumber} on https://github.com/${repoFullName}` 56 ); 57 58 // remove almost all labels if there are any 59 const listOfLabels = []; 60 const data = await appOctokit.request( 61 'GET /repos/{owner}/{repo}/pulls/{pull_number}', 62 { 63 owner: repoOwner, 64 repo: repoName, 65 pull_number: prNumber, 66 } 67 ); 68 69 const labelData = data.data.labels; 70 for (let i in labelData) { 71 if (labelData[i].name) { 72 listOfLabels.push(labelData[i].name); 73 } 74 } 75 76 for (const label of listOfLabels) { 77 if ( 78 removableLabelPrefixes.some((prefix) => 79 label.startsWith(prefix) 80 ) 81 ) { 82 await appOctokit.request( 83 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', 84 { 85 owner: repoOwner, 86 repo: repoName, 87 issue_number: prNumber, 88 name: label, 89 } 90 ); 91 } 92 } 93 } else { 94 let res = await db 95 .prepare(`SELECT * FROM LIST WHERE username = ?;`) 96 .get(prUsername); 97 if (res !== undefined) { 98 let resJson = JSON.stringify(res); 99 let parsed = JSON.parse(resJson); 100 if (reviewerUsernames.includes(prSender)) { 101 await db 102 .prepare(`DELETE FROM LIST WHERE username = ?;`) 103 .run(parsed.username); 104 await appOctokit.request( 105 'DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}', 106 { 107 owner: repoOwner, 108 repo: repoName, 109 issue_number: prNumber, 110 name: 'status: low priority', 111 } 112 ); 113 console.log( 114 `Removed #${prNumber} from https://github.com/${repoFullName} from the low priority database as well as the label.` 115 ); 116 } 117 } 118 } 119 }