@@ -221,11 +221,18 @@ def get_log_content(status: GithubStatus) -> str:
221221 return content
222222
223223
224- def main (pr_number : int ):
225- LOGGER .info (f"Getting status URL for codeql PR #{ pr_number } " )
226- github_sha = subprocess .check_output (
227- ["gh" , "api" , f"repos/github/codeql/pulls/{ pr_number } " , "--jq" , ".head.sha" ]
228- ).decode ("utf-8" ).strip ()
224+ def main (pr_number : Optional [int ], sha_override : Optional [str ] = None ):
225+ if not pr_number and not sha_override :
226+ raise Exception ("Must specify either a PR number or a SHA" )
227+
228+ if sha_override :
229+ github_sha = sha_override
230+ else :
231+ LOGGER .info (f"Getting status URL for codeql PR #{ pr_number } " )
232+ github_sha = subprocess .check_output (
233+ ["gh" , "api" , f"repos/github/codeql/pulls/{ pr_number } " , "--jq" , ".head.sha" ]
234+ ).decode ("utf-8" ).strip ()
235+
229236 local_sha = subprocess .check_output (
230237 ["git" , "rev-parse" , "HEAD" ]
231238 ).decode ("utf-8" ).strip ()
@@ -411,15 +418,22 @@ def ok_job_name(job_name: str) -> bool:
411418 if semmle_code_changed :
412419 print ("Expected output in semmle-code changed!" )
413420
414- def get_pr_number () -> int :
421+
422+ def call_main ():
423+ pr_number = None
424+ override_sha = None
415425 if len (sys .argv ) < 2 :
416426 pr_number_response = subprocess .check_output ([
417427 "gh" , "pr" , "view" , "--json" , "number"
418428 ]).decode ("utf-8" )
419429
420- return json .loads (pr_number_response )["number" ]
430+ pr_number = json .loads (pr_number_response )["number" ]
421431 else :
422- return int (sys .argv [1 ])
432+ if len (sys .argv [1 ]) > 10 :
433+ override_sha = sys .argv [1 ]
434+ else :
435+ pr_number = int (sys .argv [1 ])
436+ main (pr_number , override_sha )
423437
424438
425439if __name__ == "__main__" :
@@ -443,4 +457,4 @@ def get_pr_number() -> int:
443457 sys .exit (1 )
444458
445459 os .chdir (CODEQL_REPO_DIR )
446- main ( get_pr_number () )
460+ call_main ( )
0 commit comments