66 lines
1.6 KiB
Bash
66 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
# Backup Script for Fedora Hyprland Installer
|
|
|
|
TIMESTAMP=$(date +"%Y%m%d-%H%M%S")
|
|
BACKUP_BASE="${HOME:?HOME is not set}/.local/state/fedora-hyprland-installer/backups"
|
|
BACKUP_DIR="${BACKUP_BASE}/${TIMESTAMP}"
|
|
|
|
echo "=== Hyprland Configuration Backup ==="
|
|
echo "Target backup directory: ${BACKUP_DIR}"
|
|
|
|
CONFIG_ITEMS=(
|
|
".config/hypr"
|
|
".config/waybar"
|
|
".config/wofi"
|
|
".config/rofi"
|
|
".config/kitty"
|
|
".config/alacritty"
|
|
".config/dunst"
|
|
".config/mako"
|
|
)
|
|
|
|
# Check if any config items exist before creating backup directory
|
|
HAS_ITEMS="false"
|
|
for item in "${CONFIG_ITEMS[@]}"; do
|
|
if [ -e "${HOME}/${item}" ]; then
|
|
HAS_ITEMS="true"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "$HAS_ITEMS" = "false" ]; then
|
|
echo "[i] No pre-existing Hyprland configuration files found to back up."
|
|
echo "BACKUP_PATH=none"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p "${BACKUP_DIR}"
|
|
|
|
BACKED_UP_COUNT=0
|
|
|
|
for item in "${CONFIG_ITEMS[@]}"; do
|
|
SRC_PATH="${HOME}/${item}"
|
|
if [ -e "${SRC_PATH}" ]; then
|
|
DEST_PATH="${BACKUP_DIR}/${item}"
|
|
mkdir -p "$(dirname "${DEST_PATH}")"
|
|
if cp -a "${SRC_PATH}" "${DEST_PATH}"; then
|
|
echo "[+] Backed up: ~/${item} -> ${DEST_PATH}"
|
|
BACKED_UP_COUNT=$((BACKED_UP_COUNT + 1))
|
|
else
|
|
echo "[!] Warning: Failed to back up ~/${item}"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo "[✓] Successfully created backup of $BACKED_UP_COUNT items at: ${BACKUP_DIR}"
|
|
|
|
cat <<EOF > "${BACKUP_DIR}/manifest.txt"
|
|
Backup Date: $(date)
|
|
Backed up items count: ${BACKED_UP_COUNT}
|
|
User: $(whoami)
|
|
EOF
|
|
|
|
echo "BACKUP_PATH=${BACKUP_DIR}"
|