Add --dry-run flag to transform.sh
Shows pre-flight summary with package diff, config change counts, and detected conflicts without modifying the system.
This commit is contained in:
parent
9d26f04af6
commit
72c221897f
@ -6,6 +6,13 @@ set -euo pipefail
|
||||
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/lib.sh"
|
||||
|
||||
# --- Parse arguments ---
|
||||
|
||||
DRY_RUN=false
|
||||
if [[ "${1:-}" == "--dry-run" ]]; then
|
||||
DRY_RUN=true
|
||||
fi
|
||||
|
||||
# ============================================================
|
||||
# Phase 1: Prerequisites & Detection
|
||||
# ============================================================
|
||||
@ -38,9 +45,15 @@ fi
|
||||
# ============================================================
|
||||
|
||||
echo ""
|
||||
log "============================================"
|
||||
log " Moonarch Transform — Pre-flight Summary"
|
||||
log "============================================"
|
||||
if $DRY_RUN; then
|
||||
log "============================================"
|
||||
log " Moonarch Transform — Dry Run"
|
||||
log "============================================"
|
||||
else
|
||||
log "============================================"
|
||||
log " Moonarch Transform — Pre-flight Summary"
|
||||
log "============================================"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
log "Wayland session: detected"
|
||||
@ -65,10 +78,62 @@ log " 3. Disable conflicting DMs, enable greetd"
|
||||
log " 4. Overwrite ALL system configs (/etc/xdg/, /etc/greetd/, ...)"
|
||||
log " 5. Overwrite ALL user configs (~/.config/)"
|
||||
log " 6. Configure zsh, GTK themes, firewall, services"
|
||||
echo ""
|
||||
|
||||
# Show package diff
|
||||
MISSING_OFFICIAL=$(comm -23 <(read_packages "$OFFICIAL_PACKAGES" | sort) <(pacman -Qqe | sort) 2>/dev/null || true)
|
||||
MISSING_AUR=""
|
||||
if [[ -f "$AUR_PACKAGES" ]]; then
|
||||
MISSING_AUR=$(comm -23 <(read_packages "$AUR_PACKAGES" | sort) <(pacman -Qqe | sort) 2>/dev/null || true)
|
||||
fi
|
||||
|
||||
if [[ -n "$MISSING_OFFICIAL" ]] || [[ -n "$MISSING_AUR" ]]; then
|
||||
log "Packages to install:"
|
||||
if [[ -n "$MISSING_OFFICIAL" ]]; then
|
||||
OFFICIAL_COUNT=$(echo "$MISSING_OFFICIAL" | wc -l)
|
||||
log " Official ($OFFICIAL_COUNT):"
|
||||
echo "$MISSING_OFFICIAL" | sed 's/^/ /'
|
||||
fi
|
||||
if [[ -n "$MISSING_AUR" ]]; then
|
||||
AUR_COUNT=$(echo "$MISSING_AUR" | wc -l)
|
||||
log " AUR ($AUR_COUNT):"
|
||||
echo "$MISSING_AUR" | sed 's/^/ /'
|
||||
fi
|
||||
else
|
||||
log "Packages: all already installed"
|
||||
fi
|
||||
|
||||
# Show config diff summary
|
||||
CHANGED_XDG=0
|
||||
CHANGED_BIN=0
|
||||
for src_dir in "$DEFAULTS_DIR/xdg/"*/; do
|
||||
app_name="$(basename "$src_dir")"
|
||||
dest_dir="$HOME/.config/$app_name"
|
||||
if [[ -d "$dest_dir" ]]; then
|
||||
if ! diff -rq "$src_dir" "$dest_dir" &>/dev/null 2>&1; then
|
||||
((CHANGED_XDG++)) || true
|
||||
fi
|
||||
else
|
||||
((CHANGED_XDG++)) || true
|
||||
fi
|
||||
done
|
||||
for bin in "$DEFAULTS_DIR/bin/moonarch-"*; do
|
||||
name=$(basename "$bin")
|
||||
if ! cmp -s "$bin" "/usr/local/bin/$name" 2>/dev/null; then
|
||||
((CHANGED_BIN++)) || true
|
||||
fi
|
||||
done
|
||||
log "Config changes: $CHANGED_XDG XDG app(s), $CHANGED_BIN helper script(s)"
|
||||
|
||||
echo ""
|
||||
err "This will REPLACE your current desktop configuration."
|
||||
echo ""
|
||||
|
||||
if $DRY_RUN; then
|
||||
log "Dry run complete — no changes were made."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! confirm "Proceed?"; then
|
||||
log "Transform cancelled."
|
||||
exit 0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user