MCPcopy Index your code
hub / github.com/HKUDS/DeepCode / generate_file_tree

Method generate_file_tree

tools/code_indexer.py:568–615  ·  view source on GitHub ↗

Generate file tree structure string for the repository

(self, repo_path: Path, max_depth: int = 5)

Source from the content-addressed store, hash-verified

566 return files
567
568 def generate_file_tree(self, repo_path: Path, max_depth: int = 5) -> str:
569 """Generate file tree structure string for the repository"""
570 tree_lines = []
571
572 def add_to_tree(current_path: Path, prefix: str = "", depth: int = 0):
573 if depth > max_depth:
574 return
575
576 try:
577 items = sorted(
578 current_path.iterdir(), key=lambda x: (x.is_file(), x.name.lower())
579 )
580 # Filter out irrelevant directories and files
581 items = [
582 item
583 for item in items
584 if not item.name.startswith(".")
585 and item.name not in self.skip_directories
586 ]
587
588 for i, item in enumerate(items):
589 is_last = i == len(items) - 1
590 current_prefix = "└── " if is_last else "├── "
591 tree_lines.append(f"{prefix}{current_prefix}{item.name}")
592
593 if item.is_dir():
594 extension_prefix = " " if is_last else "│ "
595 add_to_tree(item, prefix + extension_prefix, depth + 1)
596 elif item.suffix.lower() in self.supported_extensions:
597 # Add file size information
598 try:
599 size = item.stat().st_size
600 if size > 1024:
601 size_str = f" ({size // 1024}KB)"
602 else:
603 size_str = f" ({size}B)"
604 tree_lines[-1] += size_str
605 except (OSError, PermissionError):
606 pass
607
608 except PermissionError:
609 tree_lines.append(f"{prefix}├── [Permission Denied]")
610 except Exception as e:
611 tree_lines.append(f"{prefix}├── [Error: {str(e)}]")
612
613 tree_lines.append(f"{repo_path.name}/")
614 add_to_tree(repo_path)
615 return "\n".join(tree_lines)
616
617 async def pre_filter_files(self, repo_path: Path, file_tree: str) -> List[str]:
618 """Use LLM to pre-filter relevant files based on target structure"""

Callers 1

process_repositoryMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected