Skip to content

Commit 6f23567

Browse files
chore: use from_repo + clean-up from_repo (#462)
1 parent 544471b commit 6f23567

File tree

3 files changed

+15
-36
lines changed

3 files changed

+15
-36
lines changed

src/codegen/git/repo_operator/local_repo_operator.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
from codegen.git.repo_operator.repo_operator import RepoOperator
1313
from codegen.git.schemas.enums import FetchResult
1414
from codegen.git.schemas.repo_config import RepoConfig
15+
from codegen.git.utils.clone_url import add_access_token_to_url
1516
from codegen.git.utils.file_utils import create_files
17+
from codegen.shared.configs.session_configs import config
1618

1719
logger = logging.getLogger(__name__)
1820

@@ -112,6 +114,9 @@ def create_from_repo(cls, repo_path: str, url: str, access_token: str | None = N
112114
url (str): Git URL of the repository
113115
access_token (str | None): Optional GitHub API key for operations that need GitHub access
114116
"""
117+
access_token = access_token or config.secrets.github_token
118+
url = add_access_token_to_url(url=url, token=access_token)
119+
115120
# Check if repo already exists
116121
if os.path.exists(repo_path):
117122
try:

src/codegen/sdk/core/codebase.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,11 +1219,10 @@ def set_session_options(self, **kwargs: Unpack[SessionOptions]) -> None:
12191219
@classmethod
12201220
def from_repo(
12211221
cls,
1222-
repo_name: str,
1222+
repo_full_name: str,
12231223
*,
1224-
tmp_dir: str | None = None,
1224+
tmp_dir: str | None = "/tmp/codegen",
12251225
commit: str | None = None,
1226-
shallow: bool = True,
12271226
programming_language: ProgrammingLanguage | None = None,
12281227
config: CodebaseConfig = DefaultConfig,
12291228
) -> "Codebase":
@@ -1240,23 +1239,21 @@ def from_repo(
12401239
Returns:
12411240
Codebase: A Codebase instance initialized with the cloned repository
12421241
"""
1243-
logger.info(f"Fetching codebase for {repo_name}")
1242+
logger.info(f"Fetching codebase for {repo_full_name}")
12441243

12451244
# Parse repo name
1246-
if "/" not in repo_name:
1245+
if "/" not in repo_full_name:
12471246
msg = "repo_name must be in format 'owner/repo'"
12481247
raise ValueError(msg)
1249-
owner, repo = repo_name.split("/")
1248+
owner, repo = repo_full_name.split("/")
12501249

12511250
# Setup temp directory
1252-
if tmp_dir is None:
1253-
tmp_dir = "/tmp/codegen"
12541251
os.makedirs(tmp_dir, exist_ok=True)
12551252
logger.info(f"Using directory: {tmp_dir}")
12561253

12571254
# Setup repo path and URL
12581255
repo_path = os.path.join(tmp_dir, repo)
1259-
repo_url = f"https://github.com/{repo_name}.git"
1256+
repo_url = f"https://github.com/{repo_full_name}.git"
12601257
logger.info(f"Will clone {repo_url} to {repo_path}")
12611258

12621259
try:
Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,13 @@
11
import os
22

33
import pytest
4-
from git import Repo as GitRepo
54

6-
from codegen.git.repo_operator.local_repo_operator import LocalRepoOperator
7-
from codegen.git.schemas.repo_config import RepoConfig
8-
from codegen.git.utils.clone_url import get_authenticated_clone_url_for_repo_config
9-
from codegen.sdk.codebase.config import ProjectConfig
105
from codegen.sdk.core.codebase import Codebase
11-
from codegen.shared.configs.session_configs import config
6+
from codegen.shared.enums.programming_language import ProgrammingLanguage
127

138

149
@pytest.fixture
15-
def repo_config(tmpdir):
16-
repo_config = RepoConfig(
17-
name="Kevin-s-Adventure-Game",
18-
full_name="codegen-sh/Kevin-s-Adventure-Game",
19-
base_dir=str(tmpdir),
20-
)
21-
yield repo_config
22-
23-
24-
@pytest.fixture
25-
def op(repo_config):
26-
os.chdir(repo_config.base_dir)
27-
GitRepo.clone_from(url=get_authenticated_clone_url_for_repo_config(repo_config, token=config.secrets.github_token), to_path=os.path.join(repo_config.base_dir, repo_config.name), depth=1)
28-
op = LocalRepoOperator(repo_config=repo_config)
29-
yield op
30-
31-
32-
@pytest.fixture
33-
def codebase(op: LocalRepoOperator):
34-
project_config = ProjectConfig(repo_operator=op)
35-
codebase = Codebase(projects=[project_config])
10+
def codebase(tmpdir):
11+
os.chdir(tmpdir)
12+
codebase = Codebase.from_repo(repo_full_name="codegen-sh/Kevin-s-Adventure-Game", tmp_dir=tmpdir, programming_language=ProgrammingLanguage.PYTHON)
3613
yield codebase

0 commit comments

Comments
 (0)