feature/progress
This commit is contained in:
parent
cde91623b7
commit
365d35abd9
14
CHANGELOG.md
14
CHANGELOG.md
@ -1,4 +1,16 @@
|
||||
# CHANGELOG
|
||||
# CHANGELOG - treeScannerASCII
|
||||
|
||||
- **2025-04-30 Commit v0.3.0**
|
||||
|
||||
- **Geändert:**
|
||||
- [x] Fortschrittsanzeige beim Scan: Ausgabe alle 5 Sekunden via Timer (TreeScanner.scan_directory)
|
||||
- [x] Fehlerbehandlung bei ungültigem root_path verbessert (CLI)
|
||||
- [x] Unterstützung für Ignorierliste von Verzeichnissen (`--ignore`, `-x`), rekursiv wirksam
|
||||
|
||||
- **Hinzugefügt:**
|
||||
- [x] Unterstützung für Paket-Ausführung via `python -m treeScannerASCII`
|
||||
- Leeres `__init__.py` beibehalten
|
||||
- `__main__.py` mit Fallback-Import (`relative` + `direct`) implementiert
|
||||
|
||||
- **2025-04-27 - Commit v0.2.1**
|
||||
|
||||
|
@ -33,6 +33,8 @@ python scanner.py [root_path] [-n N] [-d DEPTH] [--no-align-comments] [-l {de,en
|
||||
| `-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:**
|
||||
@ -70,6 +72,8 @@ print(output)
|
||||
| `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)
|
||||
|
||||
@ -94,13 +98,14 @@ print(output)
|
||||
- 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
|
||||
|
||||
- Bessere Fehlerbehandlung bei ungültigem Pfad (anstatt Absturz)
|
||||
- Farbliche Ausgabe der Baumstruktur in der Konsole (optional)
|
||||
- Konfigurierbare Ausgabe-Datei über CLI
|
||||
- Vorbereitung für Unicode-optimierte Konsolen
|
||||
|
||||
## 📄 Lizenz
|
||||
|
@ -0,0 +1,2 @@
|
||||
# __init__.py
|
||||
# (leer) Kennzeichnet das Verzeichnis als Python-Paket
|
12
__main__.py
12
__main__.py
@ -0,0 +1,12 @@
|
||||
# __main__.py
|
||||
# (leer) Optional: erlaubt spätere Ausführung mit `python -m treescannerASCII`
|
||||
|
||||
try:
|
||||
# Für Paket-Ausführung mit `python -m treeScannerASCII`
|
||||
from .scanner import main
|
||||
except ImportError:
|
||||
# Für direkte Ausführung mit `python scanner.py`
|
||||
from scanner import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
import os
|
||||
import argparse
|
||||
import time
|
||||
from typing import Optional, List
|
||||
|
||||
class TreeScannerConfig:
|
||||
@ -49,6 +50,7 @@ class TreeScanner:
|
||||
Args:
|
||||
config (TreeScannerConfig): Konfiguration für den Scanner.
|
||||
"""
|
||||
self.last_output = time.time()
|
||||
self.config = config
|
||||
self.folder_count = 0
|
||||
self.file_count = 0
|
||||
@ -99,6 +101,10 @@ class TreeScanner:
|
||||
for idx, name in enumerate(combined):
|
||||
if not name.startswith("<und "):
|
||||
self.file_count += 1
|
||||
if time.time() - self.last_output >= 5:
|
||||
print(f"[Info] {self.folder_count + self.file_count} Einträge gescannt...", flush=True)
|
||||
self.last_output = time.time()
|
||||
|
||||
connector = "├── " if idx < len(combined) - 1 else "└── "
|
||||
lines.append(f"{prefix}{connector}{self.config.file_icon} {name}")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user