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 <