import os
import sys
import glob
from pathlib import Path

# הבטחת פלט בעברית בטרמינל (לפי הקידוד של הקונסולה)
try:
    sys.stdout.reconfigure(encoding="utf-8")
except Exception:
    pass

# התיקייה: עדיפות לנתיב שהקונסולה העבירה (argv), אחרת -- __file__
# זה מתגבר על המקרה שהנתיב נחתך באמצע עברית
if len(sys.argv) > 1 and os.path.isdir(sys.argv[1]):
    base_dir = Path(sys.argv[1]).resolve()
else:
    base_dir = Path(__file__).parent.resolve()

output_file = base_dir / "רשימת_קבצים.txt"

lines = []
lines.append("רשימת קבצים בתיקייה:")
lines.append(f"מיקום: {base_dir}")
lines.append("=" * 50)


def collect(directory: Path, indent: int = 0):
    try:
        entries = sorted(directory.iterdir(), key=lambda p: (not p.is_dir(), p.name.lower()))
    except PermissionError:
        lines.append("  " * indent + "[אין גישה לתיקייה זו]")
        return

    for entry in entries:
        prefix = "  " * indent
        try:
            if entry.is_dir():
                lines.append(f"{prefix}[תיקייה] {entry.name}")
                collect(entry, indent + 1)
            else:
                lines.append(f"{prefix}{entry.name}")
        except OSError:
            # קבצים פגומים או ללא הרשאה
            lines.append(f"{prefix}(שגיאת גישה לקובץ: {entry.name})")


collect(base_dir)

output_file.write_text("\n".join(lines), encoding="utf-8")
print(f"הרשימה נשמרה בקובץ: {output_file}")