11import os
22import requests
3+ import json
34
4- def get_diff ():
5- repo = os .environ .get ("GITHUB_REPOSITORY" ) # e.g. "owner/repo"
6- ref = os .environ .get ("GITHUB_REF" ) # e.g. "refs/pull/123/merge"
5+ def get_pr_number ():
6+ event_path = os .getenv ("GITHUB_EVENT_PATH" )
7+ if not event_path :
8+ raise Exception ("GITHUB_EVENT_PATH not set" )
79
8- if not repo or not ref :
9- raise Exception ("Missing GitHub repository or ref environment variables." )
10+ with open (event_path , 'r' ) as f :
11+ event = json .load (f )
12+
13+ return event ["pull_request" ]["number" ]
1014
11- # Extract PR number safely:
12- parts = ref .split ("/" )
13- if len (parts ) >= 3 and parts [- 3 ] == "pull" :
14- pr_number = parts [- 2 ]
15- else :
16- raise Exception (f"Unexpected GITHUB_REF format: { ref } " )
15+ def get_diff ():
16+ repo = os .environ .get ("GITHUB_REPOSITORY" ) # e.g. "owner/repo"
17+ pr_number = get_pr_number ()
1718
1819 token = os .environ .get ("GITHUB_TOKEN" )
1920 if not token :
@@ -38,8 +39,26 @@ def get_diff():
3839 for f in files :
3940 patch = f .get ("patch" )
4041 if patch :
41- diffs .append (patch )
42+ diffs .append (f"File: { f [ 'filename' ] } \n { patch } " )
4243
4344 page += 1
4445
45- return "\n " .join (diffs )
46+ return "\n \n " .join (diffs )
47+
48+ def post_pr_comment (body : str ):
49+ repo = os .getenv ("GITHUB_REPOSITORY" )
50+ token = os .getenv ("GITHUB_TOKEN" )
51+ pr_number = get_pr_number ()
52+
53+ url = f"https://api.github.com/repos/{ repo } /issues/{ pr_number } /comments"
54+ headers = {
55+ "Authorization" : f"Bearer { token } " ,
56+ "Accept" : "application/vnd.github+json"
57+ }
58+ payload = {
59+ "body" : body
60+ }
61+
62+ response = requests .post (url , headers = headers , json = payload )
63+ print ("GitHub API response:" , response .status_code , response .text )
64+ response .raise_for_status ()
0 commit comments