mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-04 12:50:38 +08:00
Compare commits
1 Commits
v0.30
...
revert-374
Author | SHA1 | Date | |
---|---|---|---|
5d774e2473 |
@ -6,7 +6,6 @@ import tempfile
|
|||||||
from pr_agent.algo.utils import update_settings_from_args
|
from pr_agent.algo.utils import update_settings_from_args
|
||||||
from pr_agent.config_loader import get_settings
|
from pr_agent.config_loader import get_settings
|
||||||
from pr_agent.git_providers import get_git_provider
|
from pr_agent.git_providers import get_git_provider
|
||||||
from pr_agent.git_providers.utils import apply_repo_settings
|
|
||||||
from pr_agent.tools.pr_add_docs import PRAddDocs
|
from pr_agent.tools.pr_add_docs import PRAddDocs
|
||||||
from pr_agent.tools.pr_code_suggestions import PRCodeSuggestions
|
from pr_agent.tools.pr_code_suggestions import PRCodeSuggestions
|
||||||
from pr_agent.tools.pr_description import PRDescription
|
from pr_agent.tools.pr_description import PRDescription
|
||||||
@ -45,7 +44,22 @@ class PRAgent:
|
|||||||
|
|
||||||
async def handle_request(self, pr_url, request, notify=None) -> bool:
|
async def handle_request(self, pr_url, request, notify=None) -> bool:
|
||||||
# First, apply repo specific settings if exists
|
# First, apply repo specific settings if exists
|
||||||
apply_repo_settings(pr_url)
|
if get_settings().config.use_repo_settings_file:
|
||||||
|
repo_settings_file = None
|
||||||
|
try:
|
||||||
|
git_provider = get_git_provider()(pr_url)
|
||||||
|
repo_settings = git_provider.get_repo_settings()
|
||||||
|
if repo_settings:
|
||||||
|
repo_settings_file = None
|
||||||
|
fd, repo_settings_file = tempfile.mkstemp(suffix='.toml')
|
||||||
|
os.write(fd, repo_settings)
|
||||||
|
get_settings().load_file(repo_settings_file)
|
||||||
|
finally:
|
||||||
|
if repo_settings_file:
|
||||||
|
try:
|
||||||
|
os.remove(repo_settings_file)
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"Failed to remove temporary settings file {repo_settings_file}", e)
|
||||||
|
|
||||||
# Then, apply user specific settings if exists
|
# Then, apply user specific settings if exists
|
||||||
request = request.replace("'", "\\'")
|
request = request.replace("'", "\\'")
|
||||||
@ -70,4 +84,3 @@ class PRAgent:
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
import copy
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
import tempfile
|
|
||||||
|
|
||||||
from dynaconf import Dynaconf
|
|
||||||
|
|
||||||
from pr_agent.config_loader import get_settings
|
|
||||||
from pr_agent.git_providers import get_git_provider
|
|
||||||
|
|
||||||
|
|
||||||
def apply_repo_settings(pr_url):
|
|
||||||
if get_settings().config.use_repo_settings_file:
|
|
||||||
repo_settings_file = None
|
|
||||||
try:
|
|
||||||
git_provider = get_git_provider()(pr_url)
|
|
||||||
repo_settings = git_provider.get_repo_settings()
|
|
||||||
if repo_settings:
|
|
||||||
repo_settings_file = None
|
|
||||||
fd, repo_settings_file = tempfile.mkstemp(suffix='.toml')
|
|
||||||
os.write(fd, repo_settings)
|
|
||||||
new_settings = Dynaconf(settings_files=[repo_settings_file])
|
|
||||||
for section, contents in new_settings.as_dict().items():
|
|
||||||
section_dict = copy.deepcopy(get_settings().as_dict().get(section, {}))
|
|
||||||
for key, value in contents.items():
|
|
||||||
section_dict[key] = value
|
|
||||||
get_settings().unset(section)
|
|
||||||
get_settings().set(section, section_dict, merge=False)
|
|
||||||
|
|
||||||
finally:
|
|
||||||
if repo_settings_file:
|
|
||||||
try:
|
|
||||||
os.remove(repo_settings_file)
|
|
||||||
except Exception as e:
|
|
||||||
logging.error(f"Failed to remove temporary settings file {repo_settings_file}", e)
|
|
@ -15,7 +15,6 @@ from pr_agent.agent.pr_agent import PRAgent
|
|||||||
from pr_agent.algo.utils import update_settings_from_args
|
from pr_agent.algo.utils import update_settings_from_args
|
||||||
from pr_agent.config_loader import get_settings, global_settings
|
from pr_agent.config_loader import get_settings, global_settings
|
||||||
from pr_agent.git_providers import get_git_provider
|
from pr_agent.git_providers import get_git_provider
|
||||||
from pr_agent.git_providers.utils import apply_repo_settings
|
|
||||||
from pr_agent.servers.utils import verify_signature
|
from pr_agent.servers.utils import verify_signature
|
||||||
|
|
||||||
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
||||||
@ -125,7 +124,6 @@ async def handle_request(body: Dict[str, Any], event: str):
|
|||||||
# avoid double reviews when opening a PR for the first time
|
# avoid double reviews when opening a PR for the first time
|
||||||
return {}
|
return {}
|
||||||
logging.info(f"Performing review because of event={event} and action={action}")
|
logging.info(f"Performing review because of event={event} and action={action}")
|
||||||
apply_repo_settings(api_url)
|
|
||||||
for command in get_settings().github_app.pr_commands:
|
for command in get_settings().github_app.pr_commands:
|
||||||
split_command = command.split(" ")
|
split_command = command.split(" ")
|
||||||
command = split_command[0]
|
command = split_command[0]
|
||||||
|
Reference in New Issue
Block a user