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