# README for TreeScanner ![LOGO](./media/logo-colour-alpha-512x512.png) Ein flexibler Verzeichnisscanner fรผr die Kommandozeile und zur Einbindung als Python-Modul. ## ๐Ÿ“ Projektstruktur ```plaintext ๐Ÿ“ treescannerASCII/ # Projekt-Root โ”œโ”€โ”€ ๐Ÿ“ media # Bilder/Icons fรผr GitHub, Ausgabe etc. โ”œโ”€โ”€ ๐Ÿ“„ .gitignore # Ignorierte Dateien โ”œโ”€โ”€ ๐Ÿ“„ CHANGELOG.md # ร„nderungsprotokoll (Markdown) โ”œโ”€โ”€ ๐Ÿ“„ LICENSE.md # Lizenzdatei (MIT) โ”œโ”€โ”€ ๐Ÿ“„ README.md # Diese Anleitung โ”œโ”€โ”€ ๐Ÿ“„ TODO.md # Offene Aufgaben โ”œโ”€โ”€ ๐Ÿ“„ scanner.py # Hauptimplementierung (Standalone und Modul) โ”œโ”€โ”€ ๐Ÿ“„ __init__.py # Modul-Initialisierung (optional, vorbereitet) โ”œโ”€โ”€ ๐Ÿ“„ __main__.py # Einstiegspunkt fรผr `python -m treescanner` (optional, vorbereitet) โ””โ”€โ”€ ๐Ÿ“„ test_usage.py # Beispiel fรผr Modul-Integration ``` ## ๐Ÿ”ง Standalone-Ausfรผhrung (CLI) ```bash python scanner.py [root_path] [-n N] [-d DEPTH] [--no-align-comments] [-l {de,en}] [-h] ``` | Parameter | Beschreibung | |-----------------------------|--------------------------------------------------------------------------------------------------------------| | `root_path` | Optionales Verzeichnis, ab dem gescannt wird (Default: aktueller Pfad). | | `-n`, `--max-files-per-dir` | Begrenze die Anzahl an Dateien pro Verzeichnis (Default: 2). | | `-d`, `--max-depth` | Maximale Tiefe der Rekursion; unbegrenzt, wenn nicht gesetzt. | | `--no-align-comments` | Deaktiviert die Ausrichtung der Kommentar-Platzhalter am Zeilenende. | | `-l`, `--language` | Sprache der Abschlussmeldung (`de` fรผr Deutsch, `en` fรผr Englisch; Default: `de`). | | `-x`, `--ignore` | Ignoriert angegebene Verzeichnisse rekursiv (z.โ€ฏB. `.git`, `__pycache__`). Mehrfach mรถglich. | | `-o`, `--output` | Zielpfad der Ausgabedatei (z.โ€ฏB. `tree.txt` oder `logs/struktur.txt`) | | `-h`, `--help` | Zeigt diese Hilfe an und beendet das Programm. | **Ausgabe:** - Baumstruktur wird in die Datei `tree.txt` geschrieben. - Nach Abschluss erfolgt eine Zusammenfassung (Anzahl Verzeichnisse/Dateien, Name der Ausgabedatei). ## ๐Ÿงฉ Verwendung als Modul ```python from scanner import TreeScanner, TreeScannerConfig config = TreeScannerConfig( root_path="./", # zu scannender Pfad max_depth=3, # maximale Rekursionstiefe max_files_per_dir=5, # bis zu 5 Dateien pro Ordner anzeigen align_comments=True, # Kommentare ausrichten language="de" # Sprache der Ausgabe ) scanner = TreeScanner(config) output = scanner.generate_tree() print(output) ``` > Hinweis: Alle Klassen und Methoden sind mit **Google-Style Docstrings** versehen. Moderne IDEs (VS Code, PyCharm) zeigen so direkt Parameter und Rรผckgabetypen als Tooltip an. ## โš™๏ธ Konfiguration via `TreeScannerConfig` | Attribut | Typ | Beschreibung | |-----------------------------|--------------------|---------------------------------------------------------------------| | `root_path: str` | String | Basisverzeichnis zum Scannen (Default: `.`) | | `folder_icon: str` | Unicode-Zeichen | Symbol fรผr Verzeichnisse (Default: ๐Ÿ“) | | `file_icon: str` | Unicode-Zeichen | Symbol fรผr Dateien und Platzhalter (Default: ๐Ÿ“„) | | `max_files_per_dir: int` | Ganzzahl | Maximale angezeigte Dateien pro Verzeichnis (Default: 2) | | `max_depth: Optional[int]` | Ganzzahl oder None | Maximale Rekursionstiefe; `None` = unbegrenzt | | `align_comments: bool` | Bool | Kommentare am Zeilenende ausrichten (Default: `True`) | | `language: str` | String | Sprache der Zusammenfassung (`de` oder `en`) (Default: `de`) | | `output_file: str` | String | Dateiname und Pfad der Ausgabe-Datei (Default: `tree.txt`) | | `ignored_dirs: List[str]` | Liste von Strings | Verzeichnisse, die rekursiv ignoriert werden sollen (z.โ€ฏB. `.git`) | ## ๐Ÿ“„ Beispielausgabe (tree.txt) ```plaintext ๐Ÿ“ treescannerASCII/ โ”œโ”€โ”€ ๐Ÿ“ media โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ favicon.ico โ”‚ โ”œโ”€โ”€ ๐Ÿ“„ logo-bw-1024x1024.png โ”‚ โ””โ”€โ”€ ๐Ÿ“„ โ”œโ”€โ”€ ๐Ÿ“„ .gitignore โ”œโ”€โ”€ ๐Ÿ“„ CHANGELOG.md โ”œโ”€โ”€ ๐Ÿ“„ README.md โ””โ”€โ”€ ๐Ÿ“„ ``` ## ๐Ÿ“‹ Aktuelle Funktionen - Ausgabe einer ASCII-Verzeichnisstruktur - Begrenzung der Dateiausgabe pro Verzeichnis - Begrenzung der Rekursionstiefe - Optionale Ausrichtung der Kommentarzeile am Ende - Mehrsprachige Abschlussmeldung (Deutsch, Englisch) - Ausgabe als Textdatei (`tree.txt`) - Saubere Google-Style Docstrings fรผr IDE-Kompatibilitรคt - Fortschrittsanzeige bei groรŸen Scans (alle 5 Sekunden automatische Statusmeldung) - Ignorieren beliebiger Verzeichnisse rekursiv via `--ignore` - Konfigurierbarer Ausgabe-Dateiname/-Pfad via `--output` - Modularer Aufbau fรผr spรคtere Erweiterungen ## ๐Ÿ›ก๏ธ Geplante Erweiterungen - Farbliche Ausgabe der Baumstruktur in der Konsole (optional) - Vorbereitung fรผr Unicode-optimierte Konsolen ## ๐Ÿ“„ Lizenz MIT โ€“ siehe [LICENSE.md](./LICENSE.md)