Skip to content

Commit 57e4bc3

Browse files
Exui 3114 tool to improve pr reviews v10 (#15)
* updated package version * fix for changesRequested bug * improved module packaging and tidied up entry point
1 parent 4eaaebb commit 57e4bc3

File tree

3 files changed

+61
-9
lines changed

3 files changed

+61
-9
lines changed

prBot/dist/index.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
const prBot = require('./prBot');
2+
3+
module.exports = {
4+
validateEnvironment: prBot.validateEnvironment,
5+
sleep: prBot.sleep,
6+
loadEventData: prBot.loadEventData,
7+
httpRequest: prBot.httpRequest,
8+
github: prBot.github,
9+
slack: prBot.slack,
10+
stateManager: prBot.stateManager,
11+
repostApprovalList: prBot.repostApprovalList,
12+
formatPRMessage: prBot.formatPRMessage,
13+
handlePROpened: prBot.handlePROpened,
14+
handlePRReview: prBot.handlePRReview,
15+
handlePRChangesRequested: prBot.handlePRChangesRequested,
16+
handlePRClosed: prBot.handlePRClosed,
17+
run: prBot.run,
18+
CONFIG: prBot.CONFIG,
19+
ENV: prBot.ENV
20+
}

prBot/dist/prBot.js

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
#!/usr/bin/env node
2+
13
const https = require('https');
24
const fs = require('fs');
35

@@ -302,8 +304,6 @@ const stateManager = {
302304
}
303305
}
304306
}
305-
306-
307307
}
308308
}
309309

@@ -318,7 +318,7 @@ async function repostApprovalList() {
318318

319319
Object.entries(state.repositories).forEach(([repo, data]) => {
320320
Object.values(data.pullRequests).forEach(pr => {
321-
if (pr.status === 'needs_approval' || pr.changesRequested) {
321+
if (pr.status === 'needs_approval' || pr.status === 'changes_requested') {
322322
needsApproval.push({
323323
...pr,
324324
repository: repo
@@ -336,7 +336,7 @@ async function repostApprovalList() {
336336
let message = '';
337337

338338
needsApproval.forEach(pr => {
339-
const emoji = pr.changesRequested ? '🔧 ' : '';
339+
const emoji = pr.status === 'changes_requested' ? '🔧 ' : '';
340340
message += formatPRMessage(pr.number, pr.author, pr.title, pr.repository, pr.approvals, emoji) + '\n\n';
341341
});
342342

@@ -417,14 +417,22 @@ async function handlePRReview(event) {
417417
}
418418

419419
async function handlePRChangesRequested(event) {
420-
const { prNumber, repo, reviewState } = event;
420+
const { prNumber, prAuthor, repo, prTitle, reviewState } = event;
421+
422+
const approvalCount = await github.getReviews(repo, prNumber);
421423

422424
if (reviewState !== 'changes_requested') {
423425
return;
424426
}
425427

426428
await stateManager.updatePR(repo, prNumber, {
427-
changesRequested: true,
429+
number: prNumber,
430+
title: prTitle,
431+
author: prAuthor,
432+
url: `https://github.com/${repo}/pull/${prNumber}`,
433+
status: reviewState,
434+
approvals: approvalCount,
435+
createdAt: new Date().toISOString(),
428436
});
429437

430438
await repostApprovalList();
@@ -438,7 +446,7 @@ async function handlePRClosed(event) {
438446
await repostApprovalList();
439447
}
440448

441-
async function main() {
449+
async function run() {
442450
validateEnvironment();
443451
const event = loadEventData();
444452

@@ -468,4 +476,25 @@ async function main() {
468476
}
469477
}
470478

471-
main();
479+
module.exports = {
480+
CONFIG,
481+
ENV,
482+
validateEnvironment,
483+
sleep,
484+
loadEventData,
485+
httpRequest,
486+
github,
487+
slack,
488+
stateManager,
489+
repostApprovalList,
490+
formatPRMessage,
491+
handlePROpened,
492+
handlePRReview,
493+
handlePRChangesRequested,
494+
handlePRClosed,
495+
run
496+
}
497+
498+
if (require.main === module) {
499+
run();
500+
}

prBot/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
"name": "@hmcts/pr-bot",
33
"version": "1.0.5",
44
"description": "A bot to be used in Github Actions which posts to Slack contextual information about pull requests.",
5-
"main": "dist/prBot.js",
5+
"main": "dist/index.js",
6+
"bin": {
7+
"pr-bot": "dist/prBot.js"
8+
},
69
"scripts": {
710
"start": "node dist/prBot.js"
811
},

0 commit comments

Comments
 (0)