@@ -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