1
+ name : ' Format'
2
+
3
+ on :
4
+ pull_request_target :
5
+ paths : ['**/*.jl']
6
+ types : [opened, synchronize, reopened, ready_for_review]
7
+
8
+ permissions :
9
+ contents : read
10
+ actions : write
11
+ pull-requests : write
12
+
13
+ jobs :
14
+ runic :
15
+ runs-on : ubuntu-latest
16
+ if : github.event.pull_request.draft == false
17
+ steps :
18
+ - name : Check out repository
19
+ uses : actions/checkout@v4
20
+ with :
21
+ ref : ${{github.event.pull_request.head.ref}}
22
+ repository : ${{github.event.pull_request.head.repo.full_name}}
23
+ fetch-depth : 0
24
+
25
+ - name : Add upstream remote
26
+ run : |
27
+ git remote add upstream https://github.com/${{ github.repository }}
28
+ git fetch upstream
29
+
30
+ - name : Setup Julia
31
+ uses : julia-actions/setup-julia@v2
32
+ with :
33
+ version : ' 1'
34
+ arch : ' x64'
35
+ - uses : julia-actions/cache@v2
36
+
37
+ - name : Install Runic
38
+ run : |
39
+ julia --project=@runic -e 'using Pkg; Pkg.add("Runic")'
40
+ curl -o git-runic https://raw.githubusercontent.com/fredrikekre/Runic.jl/master/bin/git-runic
41
+ chmod +x git-runic
42
+ sudo mv git-runic /usr/local/bin
43
+
44
+ - name : Run Runic
45
+ id : runic
46
+ run : |
47
+ set +e
48
+ MERGE_BASE=$(git merge-base upstream/${{ github.base_ref }} HEAD) || exit 1
49
+ DIFF=$(git runic --diff $MERGE_BASE)
50
+ EXIT_CODE=$?
51
+
52
+ echo "exit_code=$EXIT_CODE" >> $GITHUB_OUTPUT
53
+ echo "diff<<EOF" >> $GITHUB_OUTPUT
54
+ echo "$DIFF" >> $GITHUB_OUTPUT
55
+ echo "EOF" >> $GITHUB_OUTPUT
56
+
57
+ # if Runic failed, bail out
58
+ [ $EXIT_CODE -eq 2 ] && exit 1 || exit 0
59
+
60
+ - name : Find comment
61
+ uses : peter-evans/find-comment@v3
62
+ id : find-comment
63
+ with :
64
+ issue-number : ${{ github.event.pull_request.number }}
65
+ comment-author : ' github-actions[bot]'
66
+ body-includes : ' <!-- runic-format-summary -->'
67
+
68
+ - name : Comment formatting suggestions
69
+ if : steps.runic.outputs.exit_code == 1
70
+ uses : peter-evans/create-or-update-comment@v4
71
+ with :
72
+ comment-id : ${{ steps.find-comment.outputs.comment-id }}
73
+ issue-number : ${{ github.event.pull_request.number }}
74
+ body : |
75
+ <!-- runic-format-summary -->
76
+
77
+ Your PR requires formatting changes to meet the project's style guidelines.
78
+ Please consider running [Runic](https://github.com/fredrikekre/Runic.jl) (`git runic ${{ github.base_ref }}`) to apply these changes.
79
+
80
+ <details>
81
+ <summary>Click here to view the suggested changes.</summary>
82
+
83
+ ```diff
84
+ ${{ steps.runic.outputs.diff }}
85
+ ```
86
+
87
+ </details>
88
+ edit-mode : replace
89
+
90
+ - name : Update stale comment
91
+ if : steps.runic.outputs.exit_code == 0 && steps.find-comment.outputs.comment-id
92
+ uses : peter-evans/create-or-update-comment@v4
93
+ with :
94
+ comment-id : ${{ steps.find-comment.outputs.comment-id }}
95
+ issue-number : ${{ github.event.pull_request.number }}
96
+ body : |
97
+ <!-- runic-format-summary -->
98
+
99
+ Your PR no longer requires formatting changes. Thank you for your contribution!
100
+ edit-mode : replace
101
+
102
+ # XXX: if Github ever supports allow-failure (actions/runner#2347)
103
+ # - name: Propagate exit code
104
+ # run: |
105
+ # exit ${{ steps.runic.outputs.exit_code }}
0 commit comments