#!/usr/bin/env bash set -euo pipefail BASE_DIR="$HOME/.config/pdev-dotfiles" CONFIG_DIR="$HOME/.config" BACKUP_DIR="$HOME/.config-backup-$(date +%Y%m%d-%H%M%S)" REPOS=( "hypr|https://git.pepe44.dev/Pepe44DEV/Hyprland-Config.git" "waybar|https://git.pepe44.dev/Pepe44DEV/Waybar-Config.git" "wofi|https://git.pepe44.dev/Pepe44DEV/Wofi-Config.git" "swaync|https://git.pepe44.dev/Pepe44DEV/Swaync-Config.git" ) PACKAGES=( hyprland waybar wofi swaync kitty fish starship cava git ) log() { echo "[INFO] $1" } backup_config() { local name="$1" if [ -e "$CONFIG_DIR/$name" ]; then mkdir -p "$BACKUP_DIR" log "Sichere $CONFIG_DIR/$name nach $BACKUP_DIR/$name" mv "$CONFIG_DIR/$name" "$BACKUP_DIR/$name" fi } install_packages() { if command -v pacman >/dev/null 2>&1; then log "Installiere benötigte Pakete..." sudo pacman -S --needed "${PACKAGES[@]}" else log "Pacman nicht gefunden, Paketinstallation übersprungen." fi } clone_or_update_repo() { local name="$1" local url="$2" local target="$BASE_DIR/$name" if [ -d "$target/.git" ]; then log "Update $name ..." git -C "$target" pull else log "Clone $name ..." git clone "$url" "$target" fi } install_config() { local name="$1" local repo_path="$BASE_DIR/$name" if [ ! -d "$repo_path" ]; then log "Repo für $name nicht gefunden, überspringe." return fi backup_config "$name" log "Installiere $name nach $CONFIG_DIR/$name" cp -r "$repo_path" "$CONFIG_DIR/$name" } main() { mkdir -p "$BASE_DIR" mkdir -p "$CONFIG_DIR" install_packages for entry in "${REPOS[@]}"; do IFS="|" read -r name url <<< "$entry" clone_or_update_repo "$name" "$url" done for entry in "${REPOS[@]}"; do IFS="|" read -r name url <<< "$entry" install_config "$name" done echo echo "Fertig." if [ -d "$BACKUP_DIR" ]; then echo "Backup liegt hier: $BACKUP_DIR" fi } main "$@"