1
1
import base64
2
2
import celery
3
3
import os
4
+ import shutil
4
5
import subprocess
5
6
6
- from celery import bootsteps
7
7
8
8
from . import util , exceptions
9
9
14
14
)
15
15
16
16
17
- @app .task (rate_limit = "1/m" )
18
- def setup_repo ():
17
+ @app .task ()
18
+ def setup_repo (repo_name , repo_full_name ):
19
19
20
- repo_name = os .environ .get ("GH_REPO_NAME" )
21
- repo_full_name = os .environ .get ("GH_REPO_FULL_NAME" )
22
20
os .mkdir ("repo_checkout" )
23
21
os .chdir ("repo_checkout" )
24
22
print (f"Setting up { repo_name } repository, cloning from { repo_full_name } " )
@@ -45,8 +43,14 @@ def setup_repo():
45
43
print (f"{ repo_name } directory already exists" )
46
44
47
45
48
- @app .task (rate_limit = "1/m" )
49
- def initiate_black_task (issue_number , issue_creator ):
46
+ @app .task ()
47
+ def cleanup_repo ():
48
+ os .chdir ("../.." )
49
+ shutil .rmtree ("repo_checkout" )
50
+
51
+
52
+ @app .task ()
53
+ def initiate_black_task (repo_name , repo_full_name , issue_number , issue_creator ):
50
54
"""Execute black
51
55
52
56
1. git fetch origin
@@ -58,10 +62,11 @@ def initiate_black_task(issue_number, issue_creator):
58
62
7. git checkout master
59
63
7. git branch -D issue-NNNN-initialize-black
60
64
"""
65
+ setup_repo (repo_name , repo_full_name )
61
66
# cd to the checked out repo, if not already there
62
67
if "repo_checkout" in os .listdir ("." ):
63
68
os .chdir ("repo_checkout" )
64
- os .chdir (f"./{ os . environ . get ( 'GH_REPO_NAME' ) } " )
69
+ os .chdir (f"./{ repo_name } " )
65
70
66
71
branch_name = f"issue-{ issue_number } -initialize-black"
67
72
@@ -75,15 +80,21 @@ def initiate_black_task(issue_number, issue_creator):
75
80
to create the pull request. Perhaps a pull request has been made, or
76
81
black has been initiated? (I'm a bot 🤖)
77
82
"""
78
- util .comment_on_pr (issue_number , message )
83
+ util .comment_on_pr (repo_full_name , issue_number , message )
79
84
raise e
80
85
81
86
needs_black = util .check_black ("." )
82
87
if needs_black :
83
88
util .exec_command (["black" , "." ])
84
89
commit_title , commit_body = util .commit_changes (issue_number )
85
90
util .exec_command (["git" , "push" , "origin" , branch_name ])
86
- util .create_gh_pr ("master" , branch_name , title = commit_title , body = commit_body )
91
+ util .create_gh_pr (
92
+ "master" ,
93
+ branch_name ,
94
+ title = commit_title ,
95
+ body = commit_body ,
96
+ repo_full_name = repo_full_name ,
97
+ )
87
98
util .exec_command (["git" , "checkout" , "master" ])
88
99
util .delete_branch (branch_name )
89
100
else :
@@ -93,11 +104,13 @@ def initiate_black_task(issue_number, issue_creator):
93
104
(I'm a bot 🤖)
94
105
"""
95
106
96
- util .comment_on_pr (issue_number , message )
97
- util .close_issue (issue_number )
107
+ util .comment_on_pr (repo_full_name , issue_number , message )
108
+ util .close_issue (repo_full_name , issue_number )
109
+
110
+ cleanup_repo ()
98
111
99
112
100
- @app .task (rate_limit = "1/m" )
113
+ @app .task ()
101
114
def black_pr_task (event_data ):
102
115
"""Execute black on a PR
103
116
@@ -111,10 +124,15 @@ def black_pr_task(event_data):
111
124
8. git checkout master
112
125
9. git branch -D pr_{pr_number}
113
126
"""
127
+ repo_name = event_data ["repository" ]["name" ]
128
+ repo_full_name = event_data ["repository" ]["full_name" ]
129
+
130
+ setup_repo (repo_name , repo_full_name )
131
+
114
132
# cd to the checked out repo, if not already there
115
133
if "repo_checkout" in os .listdir ("." ):
116
134
os .chdir ("repo_checkout" )
117
- os .chdir (f"./{ os . environ . get ( 'GH_REPO_NAME' ) } " )
135
+ os .chdir (f"./{ repo_name } " )
118
136
119
137
pr_author = event_data ["pull_request" ]["user" ]["login" ]
120
138
@@ -146,23 +164,15 @@ def black_pr_task(event_data):
146
164
for b in blackened_files :
147
165
message = message + f"\n - { b } "
148
166
message = message + "\n (I'm a bot 🤖)"
149
- util .comment_on_pr (pr_number , message )
150
- util .remove_label (pr_number , "black out" )
167
+ util .comment_on_pr (repo_full_name , pr_number , message )
168
+ util .remove_label (repo_full_name , pr_number , "black out" )
151
169
152
170
else :
153
171
message = "🐍🌚🤖 PR is already black! Good job!"
154
- util .comment_on_pr (pr_number , message )
155
- util .remove_label (pr_number , "black out" )
172
+ util .comment_on_pr (repo_full_name , pr_number , message )
173
+ util .remove_label (repo_full_name , pr_number , "black out" )
156
174
157
175
util .exec_command (["git" , "stash" ])
158
176
util .exec_command (["git" , "checkout" , "master" ])
159
177
util .delete_branch (f"pr_{ pr_number } " )
160
-
161
-
162
- class InitRepoStep (bootsteps .StartStopStep ):
163
- def start (self , c ):
164
- print ("Initialize the repository." )
165
- setup_repo ()
166
-
167
-
168
- app .steps ["worker" ].add (InitRepoStep )
178
+ cleanup_repo ()
0 commit comments