# caution: this whole file was written using Claude 3.7 Sonnet name: Auto Label Cherry-Pick on: pull_request: types: [opened, synchronize, reopened] jobs: add-label: runs-on: ubuntu-latest container: image: node:16-alpine permissions: pull-requests: write steps: - name: Add label to cherry-pick PRs uses: actions/github-script@v6 with: script: | const pr = context.payload.pull_request; const headBranch = pr.head.ref; const baseBranch = pr.base.ref; // Check if head branch contains cherry-pick pattern or base branch starts with release/ const isCherryPick = /cherry.*pick/i.test(headBranch); const isReleaseTarget = baseBranch.startsWith('release/'); if (isCherryPick || isReleaseTarget) { // Label to apply const labelToAdd = 'cherry-pick'; // Try to add the label try { await github.rest.issues.addLabels({ owner: context.repo.owner, repo: context.repo.repo, issue_number: pr.number, labels: [labelToAdd] }); console.log(`Added label "${labelToAdd}" to PR #${pr.number}`); } catch (error) { console.error(`Error adding label: ${error.message}`); } } else { console.log('PR does not match criteria for automatic labeling'); }