Skip to content

Commit

Permalink
added workflow for closing old PRs
Browse files Browse the repository at this point in the history
  • Loading branch information
Asymtode712 authored May 19, 2024
1 parent 97a28cf commit 89035b2
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions .github/workflows/close-old-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Close Stale PRs Without Owner Comments

on:
schedule:
- cron: "0 0 * * *" # Runs daily at midnight

jobs:
close_stale_prs:
runs-on: ubuntu-latest

steps:
- name: Check out the repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Close Stale PRs Without Owner Comments
run: |
const daysThreshold = 7;
const github = require('@actions/github');
const { Octokit } = require('@octokit/rest');
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
const owner = github.context.repo.owner;
const repo = github.context.repo.repo;
const now = new Date();
const thresholdDate = new Date(now.setDate(now.getDate() - daysThreshold));
async function run() {
const { data: pullRequests } = await octokit.pulls.list({ owner, repo, state: 'open' });
for (const pr of pullRequests) {
const { data: comments } = await octokit.issues.listComments({ owner, repo, issue_number: pr.number });
const ownerComments = comments.filter(comment => comment.user.login === owner);
const recentOwnerComment = ownerComments.find(comment => new Date(comment.created_at) > thresholdDate);
if (!recentOwnerComment) {
await octokit.pulls.update({ owner, repo, pull_number: pr.number, state: 'closed' });
await octokit.issues.createComment({
owner,
repo,
issue_number: pr.number,
body: "This pull request has been closed because there has been no comment from the repository owner for the last 7 days. Please reach out to the maintainers if you have any questions."
});
}
}
}
run().catch(err => {
console.error(err);
process.exit(1);
});
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 comments on commit 89035b2

Please sign in to comment.