Local Git Provider Implementation

This commit is contained in:
Patryk Kowalski
2023-07-24 12:49:57 +02:00
parent dd8f6eb923
commit 02ecaa340f
5 changed files with 241 additions and 1 deletions

View File

@ -1,7 +1,11 @@
from os.path import abspath, dirname, join
from pathlib import Path
from typing import Optional
from dynaconf import Dynaconf
PR_AGENT_TOML_KEY = 'pr-agent'
current_dir = dirname(abspath(__file__))
settings = Dynaconf(
envvar_prefix=False,
@ -18,3 +22,31 @@ settings = Dynaconf(
"settings_prod/.secrets.toml"
]]
)
# Add local configuration from pyproject.toml of the project being reviewed
def _find_repository_root() -> Path:
"""
Identify project root directory by recursively searching for the .git directory in the parent directories.
"""
cwd = Path.cwd().resolve()
no_way_up = False
while not no_way_up:
no_way_up = cwd == cwd.parent
if (cwd / ".git").is_dir():
return cwd
cwd = cwd.parent
raise FileNotFoundError("Could not find the repository root directory")
def _find_pyproject() -> Optional[Path]:
"""
Search for file pyproject.toml in the repository root.
"""
pyproject = _find_repository_root() / "pyproject.toml"
return pyproject if pyproject.is_file() else None
pyproject_path = _find_pyproject()
if pyproject_path is not None:
settings.load_file(pyproject_path, env=f'tool.{PR_AGENT_TOML_KEY}')