@@ -9,160 +9,43 @@ permissions:
99  pull-requests : write 
1010
1111jobs :
12-   check-permissions :
13-     if : > 
14-       contains(github.event.comment.body, '@bot /style') && 
15-       github.event.issue.pull_request != null  
16- runs-on : ubuntu-latest 
17-     outputs :
18-       is_authorized : ${{ steps.check_user_permission.outputs.has_permission }} 
19-     steps :
20-       - name : Check user permission 
21-         id : check_user_permission 
22-         uses : actions/github-script@v6 
23-         with :
24-           script : | 
25-             const comment_user = context.payload.comment.user.login; 
26-             const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({ 
27-               owner: context.repo.owner, 
28-               repo: context.repo.repo, 
29-               username: comment_user 
30-             }); 
31-             const authorized = permission.permission === 'admin'; 
32-             console.log(`User ${comment_user} has permission level: ${permission.permission}, authorized: ${authorized} (only admins allowed)`); 
33-             core.setOutput('has_permission', authorized); 
34- 
35- run-style-bot :
36-     needs : check-permissions 
37-     if : needs.check-permissions.outputs.is_authorized == 'true' 
38-     runs-on : ubuntu-latest 
39-     steps :
40-       - name : Extract PR details 
41-         id : pr_info 
42-         uses : actions/github-script@v6 
43-         with :
44-           script : | 
45-             const prNumber = context.payload.issue.number; 
46-             const { data: pr } = await github.rest.pulls.get({ 
47-               owner: context.repo.owner, 
48-               repo: context.repo.repo, 
49-               pull_number: prNumber 
50-             }); 
51-              
52-             // We capture both the branch ref and the "full_name" of the head repo 
53-             // so that we can check out the correct repository & branch (including forks). 
54-             core.setOutput("prNumber", prNumber); 
55-             core.setOutput("headRef", pr.head.ref); 
56-             core.setOutput("headRepoFullName", pr.head.repo.full_name); 
57- 
58- name : Check out PR branch 
59-         uses : actions/checkout@v3 
60-         env : 
61-           HEADREPOFULLNAME : ${{ steps.pr_info.outputs.headRepoFullName }} 
62-           HEADREF : ${{ steps.pr_info.outputs.headRef }} 
63-         with :
64-           #  Instead of checking out the base repo, use the contributor's repo name
65-           repository : ${{ env.HEADREPOFULLNAME }} 
66-           ref : ${{ env.HEADREF }} 
67-           #  You may need fetch-depth: 0 for being able to push
68-           fetch-depth : 0 
69-           token : ${{ secrets.GITHUB_TOKEN }} 
70-       
71-       - name : Debug 
72-         env : 
73-           HEADREPOFULLNAME : ${{ steps.pr_info.outputs.headRepoFullName }} 
74-           HEADREF : ${{ steps.pr_info.outputs.headRef }} 
75-           PRNUMBER : ${{ steps.pr_info.outputs.prNumber }} 
76-         run : | 
77-           echo "PR number: $PRNUMBER" 
78-           echo "Head Ref: $HEADREF" 
79-           echo "Head Repo Full Name: $HEADREPOFULLNAME" 
80- 
81- name : Set up Python 
82-         uses : actions/setup-python@v4 
83- 
84-       - name : Install dependencies 
85-         run : | 
86-           pip install .[quality] 
87- 
88- name : Download necessary files from main branch of Diffusers 
89-         run : | 
90-           curl -o main_Makefile https://raw.githubusercontent.com/huggingface/diffusers/main/Makefile 
91-           curl -o main_setup.py https://raw.githubusercontent.com/huggingface/diffusers/refs/heads/main/setup.py 
92-           curl -o main_check_doc_toc.py https://raw.githubusercontent.com/huggingface/diffusers/refs/heads/main/utils/check_doc_toc.py 
93-          
94- name : Compare the files and raise error if needed 
95-         run : | 
96-           diff_failed=0 
97- 
98-           if ! diff -q main_Makefile Makefile; then 
99-             echo "Error: The Makefile has changed. Please ensure it matches the main branch." 
100-             diff_failed=1 
101-           fi 
102- 
103-           if ! diff -q main_setup.py setup.py; then 
104-             echo "Error: The setup.py has changed. Please ensure it matches the main branch." 
105-             diff_failed=1 
106-           fi 
107- 
108-           if ! diff -q main_check_doc_toc.py utils/check_doc_toc.py; then 
109-             echo "Error: The utils/check_doc_toc.py has changed. Please ensure it matches the main branch." 
110-             diff_failed=1 
111-           fi 
112- 
113-           if [ $diff_failed -eq 1 ]; then 
114-             echo "❌ Error happened as we detected changes in the files that should not be changed ❌" 
115-             exit 1 
116-           fi 
117- 
118-           echo "No changes in the files. Proceeding..." 
119-           rm -rf main_Makefile main_setup.py main_check_doc_toc.py 
120- 
121- name : Run make style and make quality 
122-         run : | 
123-           make style && make quality 
124- 
125- name : Commit and push changes 
126-         id : commit_and_push 
127-         env : 
128-           HEADREPOFULLNAME : ${{ steps.pr_info.outputs.headRepoFullName }} 
129-           HEADREF : ${{ steps.pr_info.outputs.headRef }} 
130-           PRNUMBER : ${{ steps.pr_info.outputs.prNumber }} 
131-           GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} 
132-         run : | 
133-           echo "HEADREPOFULLNAME: $HEADREPOFULLNAME, HEADREF: $HEADREF" 
134-           # Configure git with the Actions bot user 
135-           git config user.name "github-actions[bot]" 
136-           git config user.email "github-actions[bot]@users.noreply.github.com" 
137- 
138-           # Make sure your 'origin' remote is set to the contributor's fork 
139-           git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/$HEADREPOFULLNAME.git" 
140- 
141-           # If there are changes after running style/quality, commit them 
142-           if [ -n "$(git status --porcelain)" ]; then 
143-             git add . 
144-             git commit -m "Apply style fixes" 
145-             # Push to the original contributor's forked branch 
146-             git push origin HEAD:$HEADREF 
147-             echo "changes_pushed=true" >> $GITHUB_OUTPUT 
148-           else 
149-             echo "No changes to commit." 
150-             echo "changes_pushed=false" >> $GITHUB_OUTPUT 
151-           fi 
152- 
153- name : Comment on PR with workflow run link 
154-         if : steps.commit_and_push.outputs.changes_pushed == 'true' 
155-         uses : actions/github-script@v6 
156-         with :
157-           script : | 
158-             const prNumber = parseInt(process.env.prNumber, 10); 
159-             const runUrl = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}` 
160- 
161-             await github.rest.issues.createComment({ 
162-               owner: context.repo.owner, 
163-               repo: context.repo.repo, 
164-               issue_number: prNumber, 
165-               body: `Style fixes have been applied. [View the workflow run here](${runUrl}).` 
166-             }); 
167- env :
168-           prNumber : ${{ steps.pr_info.outputs.prNumber }} 
12+   style :
13+     uses : huggingface/huggingface_hub/.github/workflows/style-bot-action.yml@main 
14+     with :
15+       python_quality_dependencies : " [quality]" 
16+       pre_commit_script_name : " Download and Compare files from the main branch" 
17+       pre_commit_script : | 
18+         echo "Downloading the files from the main branch" 
19+ 
20+         curl -o main_Makefile https://raw.githubusercontent.com/huggingface/diffusers/main/Makefile 
21+         curl -o main_setup.py https://raw.githubusercontent.com/huggingface/diffusers/refs/heads/main/setup.py 
22+         curl -o main_check_doc_toc.py https://raw.githubusercontent.com/huggingface/diffusers/refs/heads/main/utils/check_doc_toc.py 
23+ 
24+         echo "Compare the files and raise error if needed" 
25+ 
26+         diff_failed=0 
27+         if ! diff -q main_Makefile Makefile; then 
28+           echo "Error: The Makefile has changed. Please ensure it matches the main branch." 
29+           diff_failed=1 
30+         fi 
31+ 
32+         if ! diff -q main_setup.py setup.py; then 
33+           echo "Error: The setup.py has changed. Please ensure it matches the main branch." 
34+           diff_failed=1 
35+         fi 
36+ 
37+         if ! diff -q main_check_doc_toc.py utils/check_doc_toc.py; then 
38+           echo "Error: The utils/check_doc_toc.py has changed. Please ensure it matches the main branch." 
39+           diff_failed=1 
40+         fi 
41+ 
42+         if [ $diff_failed -eq 1 ]; then 
43+           echo "❌ Error happened as we detected changes in the files that should not be changed ❌" 
44+           exit 1 
45+         fi 
46+ 
47+         echo "No changes in the files. Proceeding..." 
48+         rm -rf main_Makefile main_setup.py main_check_doc_toc.py 
49+ style_command : " make style && make quality" 
50+     secrets :
51+       bot_token : ${{ secrets.GITHUB_TOKEN }} 
0 commit comments