mirror of
https://github.com/neovim/neovim
synced 2025-07-16 01:01:49 +00:00
ci: replace stale bot with custom implementation
The stale action has a bug where it won't close an issue/PR if it has comments after the stale label.
This commit is contained in:
50
.github/scripts/close_unresponsive.js
vendored
Normal file
50
.github/scripts/close_unresponsive.js
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
function labeledEvent(data) {
|
||||
return data.event === "labeled" && data.label.name === "needs:response";
|
||||
}
|
||||
|
||||
const numberOfDaysLimit = 30;
|
||||
const close_message = `This has been closed since a request for information has \
|
||||
not been answered for ${numberOfDaysLimit} days. It can be reopened when the \
|
||||
requested information is provided.`;
|
||||
|
||||
module.exports = async ({ github, context }) => {
|
||||
const owner = context.repo.owner;
|
||||
const repo = context.repo.repo;
|
||||
|
||||
const issues = await github.rest.issues.listForRepo({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
labels: "needs:response",
|
||||
});
|
||||
const numbers = issues.data.map((e) => e.number);
|
||||
|
||||
for (const number of numbers) {
|
||||
const timeline = await github.rest.issues.listEventsForTimeline({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: number,
|
||||
});
|
||||
const data = timeline.data.filter(labeledEvent);
|
||||
const latest_response_label = data[data.length - 1];
|
||||
const created_at = new Date(latest_response_label.created_at);
|
||||
const now = new Date();
|
||||
const diff = now - created_at;
|
||||
const diffDays = diff / (1000 * 60 * 60 * 24);
|
||||
|
||||
if (diffDays > numberOfDaysLimit) {
|
||||
github.rest.issues.update({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: number,
|
||||
state: "closed",
|
||||
});
|
||||
|
||||
github.rest.issues.createComment({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: number,
|
||||
body: close_message,
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user