#!/usr/bin/env bash set -euo pipefail TARGET="$HOME/.saved_cfg" FOLDERS_FILE="$TARGET/folders" if [[ ! -f "$FOLDERS_FILE" ]]; then echo "Error: $FOLDERS_FILE not found" exit 1 fi mkdir -p "$TARGET" while IFS= read -r line || [[ -n "$line" ]]; do # Trim whitespace folder="$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')" # Skip empty lines and comments [[ -z "$folder" || "$folder" =~ ^# ]] && continue SRC_PATH="$HOME/$folder" DEST_PATH="$TARGET/$folder" if [[ -d "$SRC_PATH" ]]; then echo "Syncing $SRC_PATH -> $DEST_PATH" mkdir -p "$(dirname "$DEST_PATH")" rsync -a --delete \ --exclude='.git/' \ "$SRC_PATH/" "$DEST_PATH/" else echo "Skipping $SRC_PATH (not found)" fi done < "$FOLDERS_FILE" echo "Sync complete."