forked from yardenshoham/gitea-backporter
-
Notifications
You must be signed in to change notification settings - Fork 8
/
lock.ts
44 lines (40 loc) · 1.36 KB
/
lock.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import {
addComment,
fetchClosedOldIssuesAndPRs,
fetchLastComment,
lockIssue,
} from "./github.ts";
const MILLISECONDS_IN_A_DAY = 1000 * 60 * 60 * 24;
// adds a comment and locks old issues and PRs
export const run = async () => {
const twoWeeksAgo = new Date(Date.now() - MILLISECONDS_IN_A_DAY * 14);
const threeMonthsAgo = new Date(Date.now() - MILLISECONDS_IN_A_DAY * 90);
const issues = await fetchClosedOldIssuesAndPRs(threeMonthsAgo);
return Promise.all(
issues.items.map(
async (
issue: {
number: number;
pull_request?: { url: string };
updated_at: string;
},
) => {
const lockedSuccessfully = await lockIssue(issue.number, "resolved");
const lastComment = await fetchLastComment(issue.number);
let activeDiscussion = false;
if (lastComment) {
activeDiscussion = new Date(lastComment.created_at) > twoWeeksAgo;
}
// if the issue was commented on in the two weeks, we add a comment
if (lockedSuccessfully && activeDiscussion) {
await addComment(
issue.number,
`We lock ${
issue.pull_request ? "pull request" : "issue"
}s 3 months after they were closed. If there's any need for further discussion, please open a new issue. :tea:`,
);
}
},
),
);
};