Fix tree command for Windows (fixes #26)

- Add platform detection to run_tree_command
- Use 'cmd /c tree /a /f' syntax on Windows
- Keep 'tree -a -f --noreport' syntax on Unix/Linux/Mac
- Modernize subprocess call with text=True and encoding='utf-8'
- Add stderr=subprocess.PIPE for better error handling

All 43 tests pass successfully.
This commit is contained in:
Kirill Markin 2025-10-25 15:02:18 +02:00
parent de1c84eca3
commit 3721ed45f0
No known key found for this signature in database
GPG key ID: 03AB9530E15B9C1C

View file

@ -4,6 +4,7 @@ Core functionality for repo-to-text
import os
import subprocess
import platform
from typing import Tuple, Optional, List, Dict, Any, Set
from datetime import datetime, timezone
from importlib.machinery import ModuleSpec
@ -36,12 +37,20 @@ def get_tree_structure(
def run_tree_command(path: str) -> str:
"""Run the tree command and return its output."""
if platform.system() == "Windows":
cmd = ["cmd", "/c", "tree", "/a", "/f", path]
else:
cmd = ["tree", "-a", "-f", "--noreport", path]
result = subprocess.run(
['tree', '-a', '-f', '--noreport', path],
cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
encoding='utf-8',
check=True
)
return result.stdout.decode('utf-8')
return result.stdout
def filter_tree_output(
tree_output: str,