From 0711d6b1ec2b8f4c6ce3626f1c63a95808ebaaed Mon Sep 17 00:00:00 2001 From: h0tznpl0tz Date: Wed, 10 Sep 2025 13:15:00 +0200 Subject: [PATCH] =?UTF-8?q?install.sh=20um=20Dry-Run=20Funktionalit=C3=A4t?= =?UTF-8?q?=20erweitert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - --dry-run/-n Flag für sicheres Testen ohne Dateiveränderungen - Farbige [DRY-RUN] Ausgabe zeigt was passieren würde - Alle kritischen Funktionen (backup, symlink, chmod) dry-run fähig - --help/-h Flag mit Verwendungshinweisen - Interaktiver Test der Installation vor echtem Deployment möglich 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- install.sh | 98 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 85 insertions(+), 13 deletions(-) diff --git a/install.sh b/install.sh index ff18d2e..c264c30 100755 --- a/install.sh +++ b/install.sh @@ -15,6 +15,9 @@ NC='\033[0m' # No Color # Script-Verzeichnis ermitteln SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# Dry-run Modus +DRY_RUN=false + # Logging-Funktionen log_info() { echo -e "${BLUE}[INFO]${NC} $1" @@ -32,13 +35,21 @@ log_error() { echo -e "${RED}[ERROR]${NC} $1" } +log_dry_run() { + echo -e "${YELLOW}[DRY-RUN]${NC} $1" +} + # Hilfsfunktionen backup_file() { local file="$1" if [[ -f "$file" ]]; then local backup="${file}.backup.$(date +%Y%m%d_%H%M%S)" - cp "$file" "$backup" - log_info "Backup erstellt: $backup" + if [[ "$DRY_RUN" == "true" ]]; then + log_dry_run "Würde Backup erstellen: $backup" + else + cp "$file" "$backup" + log_info "Backup erstellt: $backup" + fi fi } @@ -56,14 +67,22 @@ create_symlink() { backup_file "$dest" fi - ln -sf "$src" "$dest" - log_success "$name symlink erstellt: $dest -> $src" + if [[ "$DRY_RUN" == "true" ]]; then + log_dry_run "Würde Symlink erstellen: $dest -> $src" + else + ln -sf "$src" "$dest" + log_success "$name symlink erstellt: $dest -> $src" + fi } make_executable() { local file="$1" - chmod +x "$file" - log_info "$file ausführbar gemacht" + if [[ "$DRY_RUN" == "true" ]]; then + log_dry_run "Würde ausführbar machen: $file" + else + chmod +x "$file" + log_info "$file ausführbar gemacht" + fi } # Installation: Bash-Profile @@ -80,14 +99,22 @@ install_bashprofiles() { 1) log_info "Installiere h0tznpl0tz Bash-Profil..." backup_file "$HOME/.bashrc" - cp "$SCRIPT_DIR/bashprofiles/pl/.bashrc" "$HOME/.bashrc" - # Modulare Dateien erstellen falls nicht vorhanden - [[ ! -f "$HOME/.bash_aliases" ]] && touch "$HOME/.bash_aliases" - [[ ! -f "$HOME/.bash_env" ]] && touch "$HOME/.bash_env" - [[ ! -f "$HOME/.bash_paths" ]] && touch "$HOME/.bash_paths" - - log_success "Bash-Profil installiert" + if [[ "$DRY_RUN" == "true" ]]; then + log_dry_run "Würde kopieren: $SCRIPT_DIR/bashprofiles/pl/.bashrc -> $HOME/.bashrc" + log_dry_run "Würde erstellen: ~/.bash_aliases (falls nicht vorhanden)" + log_dry_run "Würde erstellen: ~/.bash_env (falls nicht vorhanden)" + log_dry_run "Würde erstellen: ~/.bash_paths (falls nicht vorhanden)" + else + cp "$SCRIPT_DIR/bashprofiles/pl/.bashrc" "$HOME/.bashrc" + + # Modulare Dateien erstellen falls nicht vorhanden + [[ ! -f "$HOME/.bash_aliases" ]] && touch "$HOME/.bash_aliases" + [[ ! -f "$HOME/.bash_env" ]] && touch "$HOME/.bash_env" + [[ ! -f "$HOME/.bash_paths" ]] && touch "$HOME/.bash_paths" + + log_success "Bash-Profil installiert" + fi log_info "Hinweis: Setze LUSER in ~/.bash_env für go-Tool" ;; 0) @@ -200,9 +227,29 @@ install_wh20() { log_info "Noch keine WH20 Tools verfügbar" } +# Hilfsfunktion +show_help() { + cat <