#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$(dirname "$(dirname "${BASH_SOURCE[0]}")")/functions"

cmd-google-auth-exclude() {
  declare desc="exempt paths from Google sign-in (prefix: /path, regex: re:^/pattern)"
  local cmd="google-auth:exclude"
  [[ "$1" == "$cmd" ]] && shift 1
  declare APP="$1"
  shift 1 || true

  [[ -n "$APP" ]] || dokku_log_fail "usage: dokku google-auth:exclude <app> <pattern...>"
  verify_app_name "$APP"

  if [[ $# -eq 0 ]]; then
    dokku_log_info2 "excluded paths for $APP"
    local pattern
    while IFS= read -r pattern; do
      [[ -n "$pattern" ]] && dokku_log_verbose "$pattern"
    done < <(fn-ga-excludes "$APP")
    return 0
  fi

  local pattern
  for pattern in "$@"; do
    fn-ga-validate-pattern "$pattern" ||
      dokku_log_fail "invalid pattern '$pattern' — use a path prefix like /api/webhooks or a regex like re:^/v[0-9]+/public/ (no spaces, quotes, or ;{})"
    fn-ga-exclude-add "$APP" "$pattern"
    dokku_log_info1 "excluded: $pattern"
  done

  if fn-google-auth-app-enabled "$APP"; then
    fn-ga-apply "$APP"
  else
    dokku_log_verbose "patterns saved; they take effect when google-auth is enabled for $APP"
  fi
}

cmd-google-auth-exclude "$@"
