treeScannerASCII/README.md

114 lines
5.8 KiB
Markdown
Raw Normal View History

2025-04-26 04:13:07 +02:00
# README for TreeScanner
2025-04-26 03:02:58 +02:00
2025-04-27 20:58:18 +02:00
![LOGO](./media/logo-colour-alpha-512x512.png)
2025-04-26 04:13:07 +02:00
Ein flexibler Verzeichnisscanner für die Kommandozeile und zur Einbindung als Python-Modul.
2025-04-26 03:02:58 +02:00
2025-04-27 20:58:18 +02:00
## 📁 Projektstruktur
2025-04-26 03:02:58 +02:00
```plaintext
2025-04-26 04:13:07 +02:00
📁 treescannerASCII/ # Projekt-Root
├── 📁 media # Bilder/Icons für GitHub, Ausgabe etc.
├── 📄 .gitignore # Ignorierte Dateien
├── 📄 CHANGELOG.md # Änderungsprotokoll (Markdown)
2025-04-27 20:58:18 +02:00
├── 📄 LICENSE.md # Lizenzdatei (MIT)
2025-04-26 04:13:07 +02:00
├── 📄 README.md # Diese Anleitung
├── 📄 TODO.md # Offene Aufgaben
2025-04-27 20:58:18 +02:00
├── 📄 scanner.py # Hauptimplementierung (Standalone und Modul)
├── 📄 __init__.py # Modul-Initialisierung (optional, vorbereitet)
├── 📄 __main__.py # Einstiegspunkt für `python -m treescanner` (optional, vorbereitet)
2025-04-26 04:13:07 +02:00
└── 📄 test_usage.py # Beispiel für Modul-Integration
2025-04-26 03:02:58 +02:00
```
2025-04-26 04:13:07 +02:00
## 🔧 Standalone-Ausführung (CLI)
2025-04-26 03:02:58 +02:00
```bash
2025-04-27 20:58:18 +02:00
python scanner.py [root_path] [-n N] [-d DEPTH] [--no-align-comments] [-l {de,en}] [-h]
2025-04-26 03:02:58 +02:00
```
2025-04-27 20:58:18 +02:00
| 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`). |
2025-04-30 11:41:24 +02:00
| `-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`) |
2025-04-27 20:58:18 +02:00
| `-h`, `--help` | Zeigt diese Hilfe an und beendet das Programm. |
**Ausgabe:**
2025-04-26 04:13:07 +02:00
2025-04-27 20:58:18 +02:00
- Baumstruktur wird in die Datei `tree.txt` geschrieben.
- Nach Abschluss erfolgt eine Zusammenfassung (Anzahl Verzeichnisse/Dateien, Name der Ausgabedatei).
2025-04-26 03:02:58 +02:00
## 🧩 Verwendung als Modul
```python
2025-04-27 20:58:18 +02:00
from scanner import TreeScanner, TreeScannerConfig
2025-04-26 03:02:58 +02:00
2025-04-26 04:13:07 +02:00
config = TreeScannerConfig(
2025-04-27 20:58:18 +02:00
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
2025-04-26 04:13:07 +02:00
)
2025-04-26 03:02:58 +02:00
scanner = TreeScanner(config)
output = scanner.generate_tree()
print(output)
```
2025-04-26 04:13:07 +02:00
> 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`
2025-04-26 03:02:58 +02:00
2025-04-27 20:58:18 +02:00
| 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`) |
2025-04-30 11:41:24 +02:00
| `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`) |
2025-04-26 03:02:58 +02:00
2025-04-27 20:58:18 +02:00
## 📄 Beispielausgabe (tree.txt)
2025-04-26 04:13:07 +02:00
```plaintext
📁 treescannerASCII/
├── 📁 media
│ ├── 📄 favicon.ico
│ ├── 📄 logo-bw-1024x1024.png
│ └── 📄 <und 3 weitere Dateien>
├── 📄 .gitignore
├── 📄 CHANGELOG.md
├── 📄 README.md
└── 📄 <und 12 weitere Dateien>
```
2025-04-26 03:02:58 +02:00
2025-04-27 20:58:18 +02:00
## 📋 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
2025-04-30 11:41:24 +02:00
- Fortschrittsanzeige bei großen Scans (alle 5 Sekunden automatische Statusmeldung)
- Ignorieren beliebiger Verzeichnisse rekursiv via `--ignore`
- Konfigurierbarer Ausgabe-Dateiname/-Pfad via `--output`
2025-04-27 20:58:18 +02:00
- Modularer Aufbau für spätere Erweiterungen
## 🛡️ Geplante Erweiterungen
- Farbliche Ausgabe der Baumstruktur in der Konsole (optional)
- Vorbereitung für Unicode-optimierte Konsolen
2025-04-26 03:02:58 +02:00
## 📄 Lizenz
2025-04-27 20:58:18 +02:00
MIT siehe [LICENSE.md](./LICENSE.md)