Added token, git repo download
Browse files- app.py +18 -8
- lib/code_reviewer.py +23 -1
app.py
CHANGED
@@ -3,30 +3,40 @@
|
|
3 |
# Import necessary modules from lib
|
4 |
from lib.code_reviewer import CodeReviewer, ReviewManager
|
5 |
import os
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
def main():
|
8 |
# Directory structure setup
|
9 |
-
# Directory for storing
|
10 |
-
|
11 |
# Directory for storing output JSON reviews
|
12 |
output_directory = "output_reviews"
|
13 |
|
14 |
# Ensure the directories exist
|
15 |
-
os.makedirs(
|
16 |
os.makedirs(output_directory, exist_ok=True)
|
17 |
|
18 |
-
# Paths for testing
|
19 |
-
sample_files = [os.path.join(input_directory, "example1.yml"), os.path.join(input_directory, "example2.yml")]
|
20 |
-
output_json_path = os.path.join(output_directory, "code_review_results.json")
|
21 |
-
|
22 |
# Initialize the code reviewer and review manager
|
23 |
code_reviewer = CodeReviewer()
|
24 |
review_manager = ReviewManager(reviewer=code_reviewer)
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
# Process files and generate reviews
|
27 |
-
reviews = review_manager.process_files(
|
28 |
|
29 |
# Save reviews to JSON
|
|
|
30 |
review_manager.save_reviews_to_json(reviews, output_json_path)
|
31 |
print(f"Reviews saved to {output_json_path}")
|
32 |
|
|
|
3 |
# Import necessary modules from lib
|
4 |
from lib.code_reviewer import CodeReviewer, ReviewManager
|
5 |
import os
|
6 |
+
import glob
|
7 |
+
|
8 |
+
# Variables for GitHub repository details
|
9 |
+
GITHUB_REPO_URL = "https://github.com/vsagar100/ansible_tf_provisioner"
|
10 |
+
GITHUB_BRANCH = "main" # Specify the branch or tag to download
|
11 |
+
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN") # Specify your GitHub token
|
12 |
|
13 |
def main():
|
14 |
# Directory structure setup
|
15 |
+
# Directory for storing downloaded GitHub repository
|
16 |
+
download_directory = "downloaded_repo"
|
17 |
# Directory for storing output JSON reviews
|
18 |
output_directory = "output_reviews"
|
19 |
|
20 |
# Ensure the directories exist
|
21 |
+
os.makedirs(download_directory, exist_ok=True)
|
22 |
os.makedirs(output_directory, exist_ok=True)
|
23 |
|
|
|
|
|
|
|
|
|
24 |
# Initialize the code reviewer and review manager
|
25 |
code_reviewer = CodeReviewer()
|
26 |
review_manager = ReviewManager(reviewer=code_reviewer)
|
27 |
|
28 |
+
# Download GitHub repository
|
29 |
+
review_manager.download_repo(GITHUB_REPO_URL, GITHUB_BRANCH, GITHUB_TOKEN, download_directory)
|
30 |
+
|
31 |
+
# Find all YAML files in the downloaded repository
|
32 |
+
yaml_files = glob.glob(os.path.join(download_directory, "**", "*.yml"), recursive=True)
|
33 |
+
yaml_files += glob.glob(os.path.join(download_directory, "**", "*.yaml"), recursive=True)
|
34 |
+
|
35 |
# Process files and generate reviews
|
36 |
+
reviews = review_manager.process_files(yaml_files)
|
37 |
|
38 |
# Save reviews to JSON
|
39 |
+
output_json_path = os.path.join(output_directory, "code_review_results.json")
|
40 |
review_manager.save_reviews_to_json(reviews, output_json_path)
|
41 |
print(f"Reviews saved to {output_json_path}")
|
42 |
|
lib/code_reviewer.py
CHANGED
@@ -5,6 +5,9 @@ import os
|
|
5 |
import json
|
6 |
import torch
|
7 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
|
|
|
|
|
|
8 |
|
9 |
# Custom Imports
|
10 |
from typing import List, Dict
|
@@ -30,7 +33,7 @@ class CodeReviewer:
|
|
30 |
Returns:
|
31 |
Dict: The code standards in dictionary form.
|
32 |
"""
|
33 |
-
standards_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "standards", "
|
34 |
with open(standards_path, 'r') as f:
|
35 |
return json.load(f)
|
36 |
|
@@ -79,6 +82,25 @@ class ReviewManager:
|
|
79 |
"""
|
80 |
self.reviewer = reviewer
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
def process_files(self, file_paths: List[str]) -> List[Dict[str, str]]:
|
83 |
"""
|
84 |
Processes multiple files for review.
|
|
|
5 |
import json
|
6 |
import torch
|
7 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
8 |
+
import requests
|
9 |
+
import zipfile
|
10 |
+
import io
|
11 |
|
12 |
# Custom Imports
|
13 |
from typing import List, Dict
|
|
|
33 |
Returns:
|
34 |
Dict: The code standards in dictionary form.
|
35 |
"""
|
36 |
+
standards_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "standards", "code_standards.json")
|
37 |
with open(standards_path, 'r') as f:
|
38 |
return json.load(f)
|
39 |
|
|
|
82 |
"""
|
83 |
self.reviewer = reviewer
|
84 |
|
85 |
+
def download_repo(self, repo_url: str, branch: str, token: str, download_path: str):
|
86 |
+
"""
|
87 |
+
Downloads a GitHub repository as a ZIP file and extracts it.
|
88 |
+
|
89 |
+
Args:
|
90 |
+
repo_url (str): The GitHub repository URL.
|
91 |
+
branch (str): The branch or tag to download.
|
92 |
+
token (str): The GitHub personal access token for authentication.
|
93 |
+
download_path (str): The path to extract the downloaded repository.
|
94 |
+
"""
|
95 |
+
zip_url = f"{repo_url}/archive/refs/heads/{branch}.zip"
|
96 |
+
headers = {"Authorization": f"token {token}"}
|
97 |
+
response = requests.get(zip_url, headers=headers)
|
98 |
+
if response.status_code == 200:
|
99 |
+
with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:
|
100 |
+
zip_ref.extractall(download_path)
|
101 |
+
else:
|
102 |
+
raise Exception(f"Failed to download repository. Status code: {response.status_code}")
|
103 |
+
|
104 |
def process_files(self, file_paths: List[str]) -> List[Dict[str, str]]:
|
105 |
"""
|
106 |
Processes multiple files for review.
|