| """Git operations for autogpt""" |
| import git |
|
|
| from autogpt.config import Config |
| from autogpt.workspace import path_in_workspace |
|
|
| CFG = Config() |
|
|
|
|
| def clone_repository(repo_url: str, clone_path: str) -> str: |
| """Clone a GitHub repository locally |
| |
| Args: |
| repo_url (str): The URL of the repository to clone |
| clone_path (str): The path to clone the repository to |
| |
| Returns: |
| str: The result of the clone operation""" |
| split_url = repo_url.split("//") |
| auth_repo_url = f"//{CFG.github_username}:{CFG.github_api_key}@".join(split_url) |
| safe_clone_path = path_in_workspace(clone_path) |
| try: |
| git.Repo.clone_from(auth_repo_url, safe_clone_path) |
| return f"""Cloned {repo_url} to {safe_clone_path}""" |
| except Exception as e: |
| return f"Error: {str(e)}" |
|
|