diff --git a/.github/workflows/label-merged-issues.yaml b/.github/workflows/label-merged-issues.yaml new file mode 100644 index 00000000..cc6159e6 --- /dev/null +++ b/.github/workflows/label-merged-issues.yaml @@ -0,0 +1,47 @@ +name: Label Merged Issues + +on: + pull_request: + types: [closed] + branches: + - 'release/**' + +jobs: + label-issues: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + + steps: + - name: Label linked issues as merged + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const prBody = context.payload.pull_request.body || ''; + const prTitle = context.payload.pull_request.title || ''; + + // Match issue references like #123, fixes #123, closes #123, resolves #123 + const issuePattern = /(?:close[sd]?|fix(?:e[sd])?|resolve[sd]?)?[\s:]*#(\d+)/gi; + const issueNumbers = new Set(); + + // Search in PR body and title + const textToSearch = `${prTitle} ${prBody}`; + let match; + while ((match = issuePattern.exec(textToSearch)) !== null) { + issueNumbers.add(parseInt(match[1])); + } + + // Apply 'merged' label to each linked issue + for (const issueNumber of issueNumbers) { + try { + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issueNumber, + labels: ['merged'] + }); + console.log(`Added 'merged' label to issue #${issueNumber}`); + } catch (error) { + console.log(`Failed to label issue #${issueNumber}: ${error.message}`); + } + } diff --git a/Daybreak.slnx b/Daybreak.slnx index e0afa7da..f57ddef1 100644 --- a/Daybreak.slnx +++ b/Daybreak.slnx @@ -8,12 +8,12 @@ + -