Skip to content

chore: modernize repo tooling and dependencies #6

chore: modernize repo tooling and dependencies

chore: modernize repo tooling and dependencies #6

Workflow file for this run

name: Changeset Check
on:
pull_request:
branches:
- main
jobs:
check:
name: Check for changeset
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for changeset
id: check
run: |
# Skip check for release PRs
if [[ "${{ github.head_ref }}" == "changeset-release/"* ]]; then
echo "skip=true" >> $GITHUB_OUTPUT
exit 0
fi
# Check if any changeset files exist (excluding config.json and README)
CHANGESETS=$(find .changeset -name "*.md" -type f ! -name "README.md" 2>/dev/null | wc -l)
if [ "$CHANGESETS" -eq 0 ]; then
echo "found=false" >> $GITHUB_OUTPUT
exit 0
fi
echo "found=true" >> $GITHUB_OUTPUT
echo "count=$CHANGESETS" >> $GITHUB_OUTPUT
- name: Post or update comment
if: steps.check.outputs.skip != 'true'
uses: actions/github-script@v7
with:
script: |
const found = '${{ steps.check.outputs.found }}' === 'true';
const count = '${{ steps.check.outputs.count }}';
const marker = '<!-- changeset-check-comment -->';
let body;
if (found) {
body = `${marker}\n✅ **Changeset found** (${count} changeset file(s))\n\nThis PR will be included in the next release.`;
} else {
body = `${marker}\n⚠️ **No changeset found**\n\nThis PR doesn't have a changeset. If this PR should trigger a release, please add one:\n\n### Option 1: Comment command\nComment on this PR:\n\`\`\`\n/changeset patch\nYour change description here\n\`\`\`\n\nOr specify packages:\n\`\`\`\n/changeset minor @node-ts-cache/core\nAdded new caching feature\n\`\`\`\n\n### Option 2: Manual\n\`\`\`bash\npnpm changeset\ngit add .changeset && git commit -m "chore: add changeset" && git push\n\`\`\`\n\n---\n*If this PR doesn't need a release (e.g., docs, CI changes), you can ignore this message.*`;
}
// Find existing comment
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number
});
const existing = comments.data.find(c => c.body.includes(marker));
if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body
});
}
// Fail the check if no changeset found
if (!found) {
core.setFailed('No changeset found. See comment for instructions.');
}