#!/bin/bash

# Run all pending migrations to bring the system in line with the installed version.

# 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" && ! -f "$STATE_DIR/skipped/$filename" ]]; then
    echo -e "\e[32m\nRunning migration (${filename%.sh})\e[0m"

    if bash $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
