|
1 | 1 | import google.generativeai as genai
|
2 | 2 | import os
|
3 | 3 | from github import Github
|
4 |
| -import base64 |
5 | 4 |
|
6 |
| -def get_pr_diff(): |
7 |
| - """Retrieves, base64 decodes, and cleans the PR diff from environment variables.""" |
8 |
| - encoded_diff = os.environ.get('INPUT_DIFF') or "" |
9 |
| - try: |
10 |
| - decoded_diff = base64.b64decode(encoded_diff).decode('utf-8') |
11 |
| - except Exception as e: |
12 |
| - print(f"Error decoding base64: {e}") |
13 |
| - return "" #Return empty string on error. |
14 |
| - |
15 |
| - cleaned_diff = decoded_diff.replace("DIFF<<EOF", "").replace("EOF", "").strip() |
16 |
| - return cleaned_diff |
| 5 | +def get_pr_diff(repo_name, pr_number, github_token): |
| 6 | + """Retrieves and cleans the PR diff using PyGithub.""" |
| 7 | + g = Github(github_token) |
| 8 | + repo = g.get_repo(repo_name) |
| 9 | + pr = repo.get_pull(pr_number) |
| 10 | + diff = pr.get_commits().files.patch # Get diff from the latest commit |
| 11 | + return diff |
17 | 12 |
|
18 | 13 | def generate_gemini_review(diff, api_key):
|
19 | 14 | """Generates a code review using the Gemini API."""
|
@@ -45,7 +40,8 @@ def main():
|
45 | 40 | pr_number = int(os.environ.get('PR_NUMBER'))
|
46 | 41 | repo_name = os.environ.get('GITHUB_REPOSITORY')
|
47 | 42 | github_token = os.environ.get('GITHUB_TOKEN')
|
48 |
| - diff = get_pr_diff() |
| 43 | + |
| 44 | + diff = get_pr_diff(repo_name, pr_number, github_token) # Get diff directly |
49 | 45 |
|
50 | 46 | review_comment = generate_gemini_review(diff, api_key)
|
51 | 47 |
|
|
0 commit comments