#!/usr/bin/env bash
set -euo pipefail

LOG_TAG="mr-anderson-recovery"
SUDO_HELPER="/usr/local/bin/mr-anderson-recovery-root"
ALLOWED_VERBS=(status logs restart verify)

usage() {
  cat <<'EOF'
Usage: mr-anderson-recovery <status|logs|restart|verify>
EOF
}

log_event() {
  local verb="$1"
  logger -t "$LOG_TAG" "user=${USER:-unknown} ssh_original_command=${SSH_ORIGINAL_COMMAND:-<none>} verb=${verb}"
}

reject() {
  local msg="$1"
  echo "ERROR: ${msg}" >&2
  exit 2
}

if [[ $# -gt 1 ]]; then
  reject "expected exactly one verb"
fi

verb="${1:-}"

if [[ -z "$verb" && -n "${SSH_ORIGINAL_COMMAND:-}" ]]; then
  read -r verb extra <<<"${SSH_ORIGINAL_COMMAND}"
  if [[ -n "${extra:-}" ]]; then
    reject "extra arguments are not allowed"
  fi
fi

if [[ -z "$verb" ]]; then
  usage
  exit 2
fi

case "$verb" in
  status|logs|restart|verify)
    log_event "$verb"
    exec sudo -n "$SUDO_HELPER" "$verb"
    ;;
  *)
    reject "unsupported verb: $verb"
    ;;
esac
