101 lines
1.9 KiB
Bash
101 lines
1.9 KiB
Bash
#!/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 "$@" |