diff --git a/bin/omarchy-migrate b/bin/omarchy-migrate index 00e6556..0f7ba64 100755 --- a/bin/omarchy-migrate +++ b/bin/omarchy-migrate @@ -1,18 +1,27 @@ #!/bin/bash -set -e - # Where we store an empty file for each migration that has already been performed. STATE_DIR="$HOME/.local/state/omarchy/migrations" mkdir -p "$STATE_DIR" +# Skipped migrations are tracked separately +mkdir -p "$STATE_DIR/skipped" + # Run any pending migrations for file in ~/.local/share/omarchy/migrations/*.sh; do filename=$(basename "$file") - if [[ ! -f "$STATE_DIR/$filename" ]]; then + if [[ ! -f "$STATE_DIR/$filename" && ! -f "$STATE_DIR/skipped/$filename" ]]; then echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m" - source $file - touch "$STATE_DIR/$filename" + + if bash -e $file; then + touch "$STATE_DIR/$filename" + else + if gum confirm "Migration ${filename%.sh} failed. Skip and continue?"; then + touch "$STATE_DIR/skipped/$filename" + else + exit 1 + fi + fi fi done