reviewbot

Source code for the is-a.dev r...
Log | Files | Refs | Activity | README | LICENSE

root / src / webhooks / closed.js

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 }
© notamitgamer • Site Built: 2026-09-05 01:53:16 UTC • git-mirror commit: c170d72 [view raw info]
Originally created with stagit • modified by notamitgamer
Forked from github.com/notamitgamer/git-mirror