Spaces:
Sleeping
Sleeping
| from app.core.config import REPOSITORIES_DIR | |
| from app.services.github_service import GithubService | |
| from app.services.metadata_service import MetadataService | |
| from app.services.parser_service import ParserService | |
| from app.services.index_service import IndexService | |
| from app.services.graph_service import GraphService | |
| from app.services.resolver_service import ResolverService | |
| from app.services.embedding_service import EmbeddingService | |
| from app.utils.file_utils import get_python_files | |
| from app.core.constants import ( | |
| METADATA_FILE, | |
| CODE_INDEX_FILE, | |
| RESOLVED_CODE_FILE, | |
| ) | |
| class RepositoryController: | |
| def __init__(self): | |
| self.github = GithubService() | |
| self.metadata = MetadataService() | |
| self.parser = ParserService() | |
| self.index = IndexService() | |
| self.resolver = ResolverService() | |
| self.graph_service = GraphService() | |
| self.embedding_service = EmbeddingService() | |
| def clone( | |
| self, | |
| url: str, | |
| ): | |
| clone_result = self.github.clone( | |
| url, | |
| REPOSITORIES_DIR, | |
| ) | |
| repository_id = clone_result["repository_id"] | |
| repo_path = clone_result["repo_path"] | |
| metadata = self.metadata.extract( | |
| repo_path, | |
| ) | |
| self.index.save( | |
| repo_path, | |
| METADATA_FILE, | |
| metadata, | |
| ) | |
| parsed_files = [] | |
| for file in get_python_files(repo_path): | |
| parsed_files.append( | |
| self.parser.parse_file( | |
| file, | |
| ) | |
| ) | |
| self.index.save( | |
| repo_path, | |
| CODE_INDEX_FILE, | |
| parsed_files, | |
| ) | |
| code_index = [ | |
| item.model_dump() | |
| for item in parsed_files | |
| ] | |
| resolved = self.resolver.resolve( | |
| code_index, | |
| ) | |
| self.index.save( | |
| repo_path, | |
| RESOLVED_CODE_FILE, | |
| resolved, | |
| ) | |
| print("Building graph...") | |
| self.graph_service.build( | |
| repository_id=repository_id, | |
| resolved=resolved, | |
| ) | |
| print("Building embeddings...") | |
| self.embedding_service.build( | |
| repository_id=repository_id, | |
| resolved=resolved, | |
| ) | |
| print("Repository indexed successfully.") | |
| metadata.repository_id = repository_id | |
| return metadata |