2025-05-16 13:51:03 +02:00
|
|
|
|
use clap::Parser;
|
|
|
|
|
use std::path::PathBuf;
|
|
|
|
|
|
2025-05-17 13:23:04 +02:00
|
|
|
|
/// CLI-Argumente für TreeScanner
|
2025-05-16 13:51:03 +02:00
|
|
|
|
#[derive(Parser, Debug)]
|
2025-05-17 13:23:04 +02:00
|
|
|
|
#[command( author ="Adam Skotarczak <adam@skotarczak.net>",
|
2025-05-17 21:02:24 +02:00
|
|
|
|
version= "0.2.0",
|
2025-05-17 13:23:04 +02:00
|
|
|
|
about = "TreeScanner: Verzeichnisse als ASCII-Baum visualisieren.",
|
|
|
|
|
|
|
|
|
|
long_about = r#"
|
|
|
|
|
TreeScanner ist ein leichtgewichtiges CLI-Tool zur strukturierten Darstellung von Verzeichnisinhalten.
|
|
|
|
|
|
|
|
|
|
Funktionen:
|
|
|
|
|
- Ausgabe als ASCII-Baum
|
|
|
|
|
- Optionen für Tiefe, Datei-Limit und Ignorierlisten
|
|
|
|
|
- Fortschrittsanzeige im Terminal
|
|
|
|
|
- Unterstützung für Konfigurationsdateien und CLI
|
|
|
|
|
|
|
|
|
|
Beispiel:
|
|
|
|
|
treescanner.exe --max-depth 3 --ignore .git,target
|
|
|
|
|
"#
|
2025-05-16 13:51:03 +02:00
|
|
|
|
)]
|
|
|
|
|
pub struct CliArgs {
|
2025-05-17 13:23:04 +02:00
|
|
|
|
/// Root-Verzeichnis für den Scan (Standard: aktuelles Verzeichnis)
|
2025-05-16 13:51:03 +02:00
|
|
|
|
#[arg(default_value = ".")]
|
|
|
|
|
pub root_path: PathBuf,
|
|
|
|
|
|
2025-05-17 13:23:04 +02:00
|
|
|
|
/// Maximale Scan-Tiefe
|
2025-05-16 13:51:03 +02:00
|
|
|
|
#[arg(long)]
|
2025-05-17 13:23:04 +02:00
|
|
|
|
pub max_depth: Option<usize>,
|
2025-05-16 13:51:03 +02:00
|
|
|
|
|
2025-05-17 21:02:24 +02:00
|
|
|
|
/// Maximale Dateianzahl pro Verzeichnis
|
2025-05-17 13:23:04 +02:00
|
|
|
|
#[arg(long, default_value_t = 100)]
|
|
|
|
|
pub max_files_per_dir: usize,
|
2025-05-16 13:51:03 +02:00
|
|
|
|
|
2025-05-17 13:23:04 +02:00
|
|
|
|
/// Verzeichnisse ignorieren (z. B. .git,target) durch Komma getrennt, ohne Leerzeichen.
|
|
|
|
|
#[arg(short = 'x', long, value_delimiter = ',')]
|
2025-05-16 13:51:03 +02:00
|
|
|
|
pub ignore: Vec<String>,
|
|
|
|
|
|
2025-05-17 13:23:04 +02:00
|
|
|
|
/// Ausgabeziel (Standard: tree.txt)
|
2025-05-17 21:02:24 +02:00
|
|
|
|
#[arg(short = 'o', long)]
|
2025-05-16 13:51:03 +02:00
|
|
|
|
pub output: Option<PathBuf>,
|
|
|
|
|
|
2025-05-17 13:23:04 +02:00
|
|
|
|
/// Nur in Konsole anzeigen, keine Ausgabedatei speichern
|
2025-05-24 03:23:44 +02:00
|
|
|
|
#[arg(short = 'i', long)]
|
2025-05-16 13:51:03 +02:00
|
|
|
|
pub viewonly: bool,
|
2025-05-17 13:23:04 +02:00
|
|
|
|
|
|
|
|
|
/// Debug-Modus aktivieren
|
|
|
|
|
#[arg(short = 'D', long)]
|
|
|
|
|
pub debug: bool,
|
|
|
|
|
|
|
|
|
|
/// Keine Statusausgaben
|
|
|
|
|
#[arg(short = 'q', long)]
|
|
|
|
|
pub quiet: bool,
|
|
|
|
|
|
|
|
|
|
/// Kommentare ausrichten (DEV: optisch instabil)
|
2025-05-17 21:02:24 +02:00
|
|
|
|
#[arg(short = 'c', long, default_value_t = false)]
|
2025-05-17 13:23:04 +02:00
|
|
|
|
pub align_comments: bool,
|
|
|
|
|
}
|