treeScannerRust/README.md

220 lines
6.8 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 <https://github.com/realAscot/treeScannerASCII> 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)
- [Build](#build)
- [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\<Benutzername>\.treescanner.conf
Linux: /home/<user>/.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
---
## Build
Du benötigst zum selbst kompilieren eine funktionierende Toolchain.
Das Makefile steht Dir als anhalt zur Verfügung.
1. npm installieren ->
---
## 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)