@@ -117,7 +117,23 @@ def generate_github_token(github_app_id, github_app_private_key, github_app_inst
117
117
return response_json ['token' ]
118
118
119
119
120
- def check_repo_exists (url , username , password ):
120
+ def check_repo_exists (git_protocol , git_host , git_organization , new_repo , username , password ):
121
+ url = git_protocol + '://' + git_host + '/' + git_organization + '/' + new_repo + '.git'
122
+ try :
123
+ auth = base64 .b64encode ((username + ':' + password ).encode ('ascii' ))
124
+ auth_header = "Basic " + auth .decode ('ascii' )
125
+ headers = {
126
+ "Authorization" : auth_header
127
+ }
128
+ request = urllib .request .Request (url , headers = headers )
129
+ urllib .request .urlopen (request )
130
+ return True
131
+ except :
132
+ return False
133
+
134
+
135
+ def check_github_repo_exists (git_organization , new_repo , username , password ):
136
+ url = 'https://api.github.com/repos/' + git_organization + '/' + new_repo
121
137
try :
122
138
auth = base64 .b64encode ((username + ':' + password ).encode ('ascii' ))
123
139
auth_header = "Basic " + auth .decode ('ascii' )
@@ -218,13 +234,22 @@ def init_argparse():
218
234
token + '@' + parser .git_host + '/' + \
219
235
parser .git_organization + '/' + parser .template_repo_name + '.git'
220
236
221
- if not check_repo_exists (new_repo_url , username , token ):
222
- print ('Downstream repo ' + new_repo_url + ' is not available' )
223
- sys .exit (exit_code )
237
+ if parser .git_host == 'github.com' :
238
+ if not check_github_repo_exists (parser .git_organization , new_repo , username , token ):
239
+ print ('Downstream repo ' + new_repo_url + ' is not available' )
240
+ sys .exit (exit_code )
241
+
242
+ if not check_github_repo_exists (parser .git_organization , parser .template_repo_name , username , token ):
243
+ print ('Upstream repo ' + template_repo_name_url + ' is not available' )
244
+ sys .exit (exit_code )
245
+ else :
246
+ if not check_repo_exists (parser .git_protocol , parser .git_host , parser .git_organization , new_repo , username , token ):
247
+ print ('Downstream repo ' + new_repo_url + ' is not available' )
248
+ sys .exit (exit_code )
224
249
225
- if not check_repo_exists (template_repo_name_url , username , token ):
226
- print ('Upstream repo ' + template_repo_name_url + ' is not available' )
227
- sys .exit (exit_code )
250
+ if not check_repo_exists (parser . git_protocol , parser . git_host , parser . git_organization , parser . template_repo_name , username , token ):
251
+ print ('Upstream repo ' + template_repo_name_url + ' is not available' )
252
+ sys .exit (exit_code )
228
253
229
254
# Set some default user details
230
255
execute ([
'git' ,
'config' ,
'--global' ,
'user.email' ,
'[email protected] ' ])
0 commit comments