11name : Code Linting
22
33on :
4- pull_request :
4+ pull_request_target :
55 types : [opened, synchronize]
66
77jobs :
@@ -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