Inital Comit Upload README and Install Script
This commit is contained in:
101
install.sh
Normal file
101
install.sh
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/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 "$@"
|
||||
Reference in New Issue
Block a user