Skip to content

Commit 4d40fc9

Browse files
authored
allow for PRs from forks to run linting checks (#594)
1 parent a43d7ab commit 4d40fc9

File tree

1 file changed

+38
-16
lines changed

1 file changed

+38
-16
lines changed

.github/workflows/lint.yml

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Code Linting
22

33
on:
4-
pull_request:
4+
pull_request_target:
55
types: [opened, synchronize]
66

77
jobs:
@@ -27,27 +27,49 @@ jobs:
2727

2828
- name: Run linter
2929
run: |
30-
FILES=$(git diff --name-only --diff-filter=d ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep '\.zig$')
31-
echo changed files: $FILES
32-
./tools/linter/zig-out/bin/linter $FILES > lint_results.json
30+
FILES=$(git diff --name-only --diff-filter=d ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep '\.zig$' || true)
31+
echo "changed files: $FILES"
32+
if [ -n "$FILES" ]; then
33+
./tools/linter/zig-out/bin/linter $FILES > lint_results.json
34+
else
35+
echo "[]" > lint_results.json
36+
fi
3337
3438
- name: Post comments
35-
uses: actions/github-script@v6
39+
uses: actions/github-script@v7
3640
with:
3741
github-token: ${{ secrets.GITHUB_TOKEN }}
3842
script: |
3943
const fs = require('fs');
40-
const issues = JSON.parse(fs.readFileSync('lint_results.json', 'utf8'));
4144
42-
for (const issue of issues) {
43-
await github.rest.pulls.createReviewComment({
44-
owner: context.repo.owner,
45-
repo: context.repo.repo,
46-
pull_number: context.issue.number,
47-
commit_id: context.payload.pull_request.head.sha,
48-
path: issue.file,
49-
line: issue.line,
50-
body: issue.message
51-
});
45+
// Check if lint results file exists and has content
46+
if (!fs.existsSync('lint_results.json')) {
47+
console.log('No lint results file found');
48+
return;
49+
}
50+
51+
const content = fs.readFileSync('lint_results.json', 'utf8').trim();
52+
if (!content || content === '[]') {
53+
console.log('No lint issues found');
54+
return;
5255
}
5356
57+
const issues = JSON.parse(content);
58+
console.log(`Found ${issues.length} lint issues`);
59+
60+
for (const issue of issues) {
61+
try {
62+
await github.rest.pulls.createReviewComment({
63+
owner: context.repo.owner,
64+
repo: context.repo.repo,
65+
pull_number: context.issue.number,
66+
commit_id: context.payload.pull_request.head.sha,
67+
path: issue.file,
68+
line: issue.line,
69+
body: issue.message
70+
});
71+
console.log(`Posted comment for ${issue.file}:${issue.line}`);
72+
} catch (error) {
73+
console.error(`Failed to post comment for ${issue.file}:${issue.line}:`, error.message);
74+
}
75+
}

0 commit comments

Comments
 (0)