|
|
| import os |
| import fnmatch |
|
|
| def get_file_tree(repo_path, ignore_patterns, max_depth): |
| file_tree = "" |
| for root, dirs, files in os.walk(repo_path): |
| |
| dirs[:] = [d for d in dirs if not any(fnmatch.fnmatch(d, pattern) for pattern in ignore_patterns)] |
| |
| level = root.replace(repo_path, "/").count(os.sep) |
| |
| |
| |
| |
| if level > max_depth: |
| continue |
| |
| indent = " " * 4 * (level) |
| file_tree += f"{indent}{os.path.basename(root)}/\n" |
|
|
| subindent = " " * 4 * (level + 1) |
| for f in files: |
| |
| if not any(fnmatch.fnmatch(f, pattern) for pattern in ignore_patterns): |
| file_tree += f"{subindent}{f}\n" |
| return file_tree |
|
|
| def process_files(repo_path, ignore_patterns, max_depth): |
| file_contents = [] |
| for root, dirs, files in os.walk(repo_path): |
| |
| dirs[:] = [d for d in dirs if not any(fnmatch.fnmatch(d, pattern) for pattern in ignore_patterns)] |
| |
| level = root.replace(repo_path, "/").count(os.sep) |
| if level > max_depth: |
| continue |
| |
| for file in files: |
| |
| if not any(fnmatch.fnmatch(file, pattern) for pattern in ignore_patterns): |
| file_path = os.path.join(root, file) |
| with open(file_path, "r", encoding="utf-8", errors="ignore") as f: |
| content = f.read() |
| file_contents.append((file_path.replace(f'{repo_path}/', ''), content)) |
| return file_contents |
|
|
| if __name__ == "__main__": |
|
|
| repo_path = "tmp/DeepSeek-Math" |
| |
| ignore_patterns = [] |
| if os.path.exists(".CodeLumiaignore"): |
| with open(".CodeLumiaignore", "r") as f: |
| for line in f: |
| line = line.strip() |
| if line and not line.startswith("#"): |
| ignore_patterns.append(line) |
| max_depth = 1 |
| file_tree = get_file_tree(repo_path, ignore_patterns, max_depth) |
| print(file_tree) |
|
|