install.sh um Dry-Run Funktionalität erweitert
- --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 <noreply@anthropic.com>
This commit is contained in:
+84
-12
@@ -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"
|
||||
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"
|
||||
|
||||
log_success "Bash-Profil installiert"
|
||||
# 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 <<HELP
|
||||
Usage: $0 [OPTIONS]
|
||||
|
||||
Interaktiver Installer für easyname Support Bash-Snippets
|
||||
|
||||
Optionen:
|
||||
--dry-run, -n Zeigt nur was gemacht würde, ohne Dateien zu verändern
|
||||
--help, -h Zeigt diese Hilfe an
|
||||
|
||||
Beispiele:
|
||||
$0 Startet den interaktiven Installer
|
||||
$0 --dry-run Testet den Installer ohne Veränderungen
|
||||
HELP
|
||||
}
|
||||
|
||||
# Hauptmenü
|
||||
show_menu() {
|
||||
echo -e "\n${GREEN}=== easyname Support Bash-Snippets Installer ===${NC}"
|
||||
if [[ "$DRY_RUN" == "true" ]]; then
|
||||
echo -e "${YELLOW}(DRY-RUN MODUS)${NC}"
|
||||
fi
|
||||
echo -e "${BLUE}Verfügbare Installationskategorien:${NC}\n"
|
||||
echo "1) Bash-Profile - Optimierte .bashrc Konfigurationen"
|
||||
echo "2) Connect Tools - SSH-Shortcuts und Verbindungstools"
|
||||
@@ -215,6 +262,31 @@ show_menu() {
|
||||
|
||||
# Hauptinstallation
|
||||
main() {
|
||||
# Argumente parsen
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--dry-run|-n)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
--help|-h)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
log_error "Unbekannte Option: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$DRY_RUN" == "true" ]]; then
|
||||
log_info "=== DRY-RUN MODUS AKTIVIERT ==="
|
||||
log_info "Keine Dateien werden verändert!"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
log_info "Installation gestartet in: $SCRIPT_DIR"
|
||||
|
||||
# Prüfe Abhängigkeiten
|
||||
|
||||
Reference in New Issue
Block a user