#!/usr/bin/env bash
set -euo pipefail
BIN="sentinel-password-vault"
if [ "${EUID:-$(id -u)}" -ne 0 ]; then
  echo "ERROR: run repair with sudo: sudo sentinel-password-vault-repair <username>" >&2
  exit 13
fi
TARGET_USER="${1:-${SUDO_USER:-}}"
if [ -z "$TARGET_USER" ] || [ "$TARGET_USER" = "root" ]; then
  echo "ERROR: provide the desktop username, e.g. sudo sentinel-password-vault-repair stephen" >&2
  exit 2
fi
USER_HOME=$(getent passwd "$TARGET_USER" | cut -d: -f6)
if [ -z "$USER_HOME" ] || [ ! -d "$USER_HOME" ]; then
  echo "ERROR: cannot determine home for $TARGET_USER" >&2
  exit 2
fi
TS=$(date +%Y%m%d-%H%M%S)
move_shadow() {
  local p="$1"
  if [ -e "$p" ]; then
    mv "$p" "$p.shadowed-$TS"
    echo "Moved shadow: $p"
  fi
}
move_shadow "/usr/local/bin/$BIN"
move_shadow "$USER_HOME/.local/bin/$BIN"
move_shadow "/root/.local/bin/$BIN"
move_shadow "$USER_HOME/.local/share/applications/sentinel-password-vault.desktop"
move_shadow "/root/.local/share/applications/sentinel-password-vault.desktop"
# Recreate desktop launcher as user.
sudo -u "$TARGET_USER" /usr/bin/sentinel-password-vault-user-setup --clean-shadow || true
if command -v update-desktop-database >/dev/null 2>&1; then update-desktop-database /usr/share/applications >/dev/null 2>&1 || true; fi
if command -v gtk-update-icon-cache >/dev/null 2>&1; then gtk-update-icon-cache -f -q /usr/share/icons/hicolor >/dev/null 2>&1 || true; fi
echo "Repair complete for $TARGET_USER."
echo "Now run as $TARGET_USER: hash -r && sentinel-password-vault --version && sentinel-password-vault-doctor"
