#!/bin/bash # omarchy:summary=Run pending Omarchy migrations for the current user. # omarchy:args=[--pending] set -euo pipefail mode="run" while (($#)); do case "$1" in --pending|--check) mode="pending" shift ;; -h|--help) echo "Usage: omarchy-migrate-user [--pending]" exit 0 ;; *) echo "Unknown option: $1" >&2 exit 1 ;; esac done OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}" STATE_DIR="${OMARCHY_USER_MIGRATION_STATE:-$HOME/.local/state/omarchy/migrations/user}" MIGRATIONS_DIR="$OMARCHY_PATH/migrations/user" pending_migrations() { [[ -d $MIGRATIONS_DIR ]] || return 0 for file in "$MIGRATIONS_DIR"/*.sh; do [[ -f $file ]] || continue filename=$(basename "$file") if [[ ! -f $STATE_DIR/$filename ]]; then printf '%s\n' "$filename" fi done } if [[ $mode == "pending" ]]; then pending_output=$(pending_migrations) if [[ -n $pending_output ]]; then printf '%s\n' "$pending_output" exit 0 else exit 1 fi fi mkdir -p "$STATE_DIR" [[ -d $MIGRATIONS_DIR ]] || exit 0 for file in "$MIGRATIONS_DIR"/*.sh; do [[ -f $file ]] || continue filename=$(basename "$file") if [[ ! -f $STATE_DIR/$filename ]]; then echo -e "\e[32m\nRunning user migration (${filename%.sh})\e[0m" OMARCHY_PATH="$OMARCHY_PATH" bash -euo pipefail "$file" touch "$STATE_DIR/$filename" fi done