# TreeScanner CLI Verzeichnisscanner ![TreeScanner-Logo](./media/logo-treescanner_512x512.png) **TreeScanner** ist ein leichtgewichtiges, portables CLI-Tool zur rekursiven Analyse von Verzeichnisstrukturen. Es erzeugt eine klar strukturierte ASCII-Ausgabe und eignet sich hervorragend fΓΌr Dokumentation, Debugging oder Buildsysteme. > πŸ”§ Diese Version ist eine komplette Neuentwicklung in **Rust** und ersetzt das ursprΓΌngliche Python-Projekt: > ➜ [treeScannerASCII (Python)](https://github.com/realAscot/treeScannerASCII) Der original treeScanner in Python ist unter zu finden. Dieser ist auch als Python-Modul zu verwenden. --- ## Inhalt - [TreeScanner CLI Verzeichnisscanner](#treescanner-cli-verzeichnisscanner) - [Inhalt](#inhalt) - [Beschreibung](#beschreibung) - [Installation](#installation) - [Über .zip Archiv](#ΓΌber-zip-archiv) - [Installer](#installer) - [Struktur](#struktur) - [✨ Features](#-features) - [▢️ Verwendung](#️-verwendung) - [πŸ–Ό Beispielausgabe](#-beispielausgabe) - [βš™οΈ Konfiguration `.treescanner.conf`](#️-konfiguration-treescannerconf) - [πŸ” Ort](#-ort) - [πŸ“˜ Format](#-format) - [πŸ“ Format (.toml)](#-format-toml) - [Lizenz](#lizenz) - [Eingesetzte Libraries (MIT-kompatibel):](#eingesetzte-libraries-mit-kompatibel) - [πŸ’¬ Kontakt](#-kontakt) --- ## Beschreibung Der treeScanner.exe ist ursprΓΌnglich als ein Tool entwickelt worden mit dem man Verzeichnisstrukturen fΓΌr Dokumentationen erzeugen konnte. TreeScanner durchsucht Verzeichnisse rekursiv, filtert optional bestimmte Ordner aus und gibt eine **strukturierte ASCII-Baumdarstellung** mit Icons und optional ausgerichteten Kommentaren aus. Er eignet sich fΓΌr technische Dokumentationen, Versionskontrollen, Release-Skripte und CI/CD-Prozesse. --- ## Installation ### Über .zip Archiv ### Installer Der Installer `treeScanner-Setup.exe` der jeweils die aktuelle Version auf GitHub enthΓ€llt, bietet Dir an das Programm im Windows-Verzeichnis zu installieren. Dies ist zwar unΓΌblich aber --- ## Struktur **GEPLANTE STRUKTUR (DEV)** ```plaintext πŸ“ treeScanner # β”œβ”€β”€ πŸ“ .cargo # β”‚ └── πŸ“„ config.toml # β”œβ”€β”€ πŸ“ .vscode # β”‚ └── πŸ“„ tasks.json # β”œβ”€β”€ πŸ“ media # β”‚ β”œβ”€β”€ πŸ“„ logo-treescanner.png # β”‚ └── πŸ“„ logo-treescanner_512x512.png # β”œβ”€β”€ πŸ“ resources # β”‚ β”œβ”€β”€ πŸ“„ icon.ico # β”‚ └── πŸ“„ version.rc # β”œβ”€β”€ πŸ“ src # β”‚ β”œβ”€β”€ πŸ“ app # β”‚ β”‚ β”œβ”€β”€ πŸ“„ mod.rs # β”‚ β”‚ └── πŸ“„ treebuilder.rs # β”‚ β”œβ”€β”€ πŸ“ config # β”‚ β”‚ β”œβ”€β”€ πŸ“„ args.rs # β”‚ β”‚ β”œβ”€β”€ πŸ“„ loader.rs # β”‚ β”‚ └── πŸ“„ mod.rs # β”‚ β”œβ”€β”€ πŸ“ utils # β”‚ β”‚ β”œβ”€β”€ πŸ“„ ascii_spinner.rs # β”‚ β”‚ β”œβ”€β”€ πŸ“„ logger.rs # β”‚ β”‚ └── πŸ“„ mod.rs # β”‚ β”œβ”€β”€ πŸ“„ lib.rs # β”‚ └── πŸ“„ main.rs # β”œβ”€β”€ πŸ“ tests # β”‚ β”œβ”€β”€ πŸ“„ config_tests.rs # β”‚ └── πŸ“„ treebuilder_tests.rs # β”œβ”€β”€ πŸ“„ .gitignore # β”œβ”€β”€ πŸ“„ build.rs # β”œβ”€β”€ πŸ“„ Cargo.lock # β”œβ”€β”€ πŸ“„ Cargo.toml # β”œβ”€β”€ πŸ“„ CHANGELOG.md # β”œβ”€β”€ πŸ“„ LICENSE # β”œβ”€β”€ πŸ“„ Makefile # β”œβ”€β”€ πŸ“„ README.md # └── πŸ“„ VERSION # ``` --- ## ✨ Features - πŸ“ ASCII-Baumdarstellung mit Icons (πŸ“, πŸ“„) - 🚫 Ignorierliste per CLI oder Konfig-Datei - ⏫ Limit fΓΌr Tiefe (`--max-depth`) und Dateianzahl pro Verzeichnis - πŸ“„ Ausgabe in Datei oder Konsole - βš™ Konfigurierbar via `~/.treescanner.conf` - πŸŒ€ Fortschrittsanzeige beim Scannen (Spinner) - πŸ’¬ Optionale Kommentarspalte (`--align-comments`) - πŸ§ͺ Getestete Komponenten (unit-tested) - πŸ”• Silent-Modus (`--quiet`) - πŸ›  Portable Binary (`.exe`) ohne externe AbhΓ€ngigkeiten --- ## ▢️ Verwendung ```bash # Einfacher Scan (aktuelles Verzeichnis) ./treescanner.exe # Mit Tiefe 3, ohne speichern ./treescanner.exe --max-depth 3 --viewonly # Mit Kommentar-Ausrichtung ./treescanner.exe --align-comments # Ergebnis in Datei mit anderem Pfad speichern ./treescanner.exe --output ./struktur/tree.md ``` --- ## πŸ–Ό Beispielausgabe ```plaintext πŸ“ ./src/ β”œβ”€β”€ πŸ“„ main.rs # β”œβ”€β”€ πŸ“ app/ # β”‚ └── πŸ“„ treebuilder.rs # └── πŸ“ utils/ # β”œβ”€β”€ πŸ“„ ascii_spinner.rs # └── πŸ“„ logger.rs # ``` --- ## βš™οΈ Konfiguration `.treescanner.conf` ### πŸ” Ort StandardmÀßig gesucht im **Benutzerverzeichnis**: ```plaintext Windows: C:\Users\\.treescanner.conf Linux: /home//.treescanner.conf ``` ### πŸ“˜ Format ### πŸ“ Format (.toml) ```toml max_depth = 3 max_files_per_dir = 100 ignore = [".git", "target", ".vscode"] output = "tree.txt" viewonly = false align_comments = false ``` - CLI-Einstellungen ΓΌberschreiben Konfigurationswerte bei Kollision - Die Datei wird beim ersten Start automatisch erzeugt, falls sie fehlt - Der Pfad ist **nicht fest kodiert**, sondern dynamisch via `dirs::home_dir()` ermittelt --- ## Lizenz Dieses Projekt steht unter der [MIT-Lizenz](./LICENSE). ### Eingesetzte Libraries (MIT-kompatibel): | Crate | Lizenz | |-----------------|------------| | `clap` | MIT/Apache | | `dirs` | MIT/Apache | | `serde` | MIT/Apache | | `serde_derive` | MIT/Apache | | `toml` | MIT/Apache | | `tempfile` | MIT/Apache (nur fΓΌr Tests) | | `console` | MIT | ⚠️ Alle eingebundenen Libraries sind **MIT- oder Apache-2.0-kompatibel** und dΓΌrfen ohne EinschrΓ€nkungen in proprietΓ€ren oder Open-Source-Projekten verwendet werden. siehe [LICENSE](./LICENSE) --- ## πŸ’¬ Kontakt **Adam Skotarczak** βœ‰ [adam@skotarczak.net](mailto:adam@skotarczak.net) πŸ”— [realAscot auf GitHub](https://github.com/realAscot)