Close PRs with Feedback #109
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Close PRs with Feedback | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 0 * * *' | |
jobs: | |
close-pr: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Close PR if it has label "feedback left" and no changes in 7 days | |
uses: actions/github-script@v3 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const { data: pullRequests } = await github.pulls.list({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'open', | |
base: 'master', | |
}); | |
for (const pullRequest of pullRequests) { | |
const { data: labels } = await github.issues.listLabelsOnIssue({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pullRequest.number, | |
}); | |
const feedbackLabel = labels.find((label) => label.name === 'feedback left'); | |
if (feedbackLabel) { | |
const lastUpdated = new Date(pullRequest.updated_at); | |
const sevenDaysAgo = new Date(); | |
sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7); | |
if (lastUpdated < sevenDaysAgo) { | |
await github.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: pullRequest.number, | |
body: 'Closing this PR because there has been no activity for the past 7 days. Feel free to reopen if you have any feedback.', | |
}); | |
await github.pulls.update({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
pull_number: pullRequest.number, | |
state: 'closed', | |
}); | |
} | |
} | |
} |