Skip to content

Beads sync

Beads sync #72

Workflow file for this run

name: Close Issues on PR Merge to Next
on:
pull_request:
types:
- closed
jobs:
close_issues:
if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'next'
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: read
steps:
- name: Parse and close linked issues
uses: actions/github-script@v7
with:
script: |
const body = context.payload.pull_request.body || "";
const closedIssues = new Set();
const issueRegex = /(Closes|Fixes|Resolves)\s*:?\s+#(\d+)/gi;
let match;
while ((match = issueRegex.exec(body)) !== null) {
const issueNumber = Number(match[2]);
if (!closedIssues.has(issueNumber)) {
closedIssues.add(issueNumber);
try {
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNumber,
state: 'closed'
});
console.log(`Closed issue #${issueNumber}`);
} catch (e) {
console.error(`Could not automatically close issue #${issueNumber}. Skipping issue.`);
}
}
}
if (closedIssues.size === 0) {
console.log("No issues found to close.");
}