#!/usr/bin/env bash
# Affiche quel client OAuth est utilisé (ADC, GSC, .env) et rappelle la règle d'affichage Google.
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
ENV_FILE="${ROOT}/.secrets/.env"
ADC="${HOME}/.config/gcloud/application_default_credentials.json"
CLIENT_FILE="${HOME}/.config/gcloud/cursor-latoutfrancais-oauth-client.json"
GSC_CONFIG="${HOME}/Library/Preferences/gsc-mcp/config.json"
PILOTECOM_WEB_CLIENT="1043449182389-kbif4h7m607a2va71p0ck51ohr0cqign.apps.googleusercontent.com"
GCLOUD_DEFAULT_CLIENT="764086051850-6qr4p6gpi6hn506pt8ejuq83di341hur.apps.googleusercontent.com"

read_env() {
  grep -E "^GOOGLE_ID_CLIENT=" "$ENV_FILE" 2>/dev/null | head -1 | cut -d= -f2- | tr -d '\r' || true
}

json_client() {
  python3 - "$1" <<'PY'
import json, sys
p = sys.argv[1]
try:
    d = json.load(open(p))
    cid = d.get("client_id") or d.get("installed", {}).get("client_id") or d.get("clientId")
    print(cid or "—")
except FileNotFoundError:
    print("(fichier absent)")
except Exception as e:
    print(f"(erreur: {e})")
PY
}

echo "=== OAuth MCP — diagnostic ==="
echo ""
echo ".secrets/.env GOOGLE_ID_CLIENT : $(read_env)"
echo "cursor-latoutfrancais-oauth-client.json : $(json_client "$CLIENT_FILE")"
echo "gsc-mcp config.json clientId          : $(json_client "$GSC_CONFIG")"
echo "application_default_credentials.json  : $(json_client "$ADC")"
echo "Projet gcloud actif                   : $(gcloud config get-value project 2>/dev/null || echo '?')"
echo ""
echo "Références :"
echo "  PilotEcom (app web SaaS)  : ${PILOTECOM_WEB_CLIENT}"
echo "  gcloud par défaut (à éviter): ${GCLOUD_DEFAULT_CLIENT}"
echo ""

adc="$(json_client "$ADC")"
env_id="$(read_env)"

if [[ "$adc" == "$GCLOUD_DEFAULT_CLIENT" ]]; then
  echo "⚠ ADC utilise encore le client gcloud par défaut."
  echo "  → Relance : ./scripts/mcp-auth-refresh.sh"
  echo "  → N'utilise PAS : gcloud auth application-default login (sans --client-id-file)"
elif [[ "$adc" == "$env_id" ]]; then
  echo "✓ ADC = client .secrets/.env"
else
  echo "⚠ ADC ≠ client .secrets/.env"
fi

if [[ "$env_id" == "$PILOTECOM_WEB_CLIENT" ]]; then
  echo "⚠ GOOGLE_ID_CLIENT = client PilotEcom WEB (apps/web). Utilise le client Desktop « Cursor »."
fi

echo ""
echo "Pourquoi Google affiche « PilotEcom » et pas « Cursor » ?"
echo "  Le libellé OAuth vient de APIs & Services → OAuth consent screen → App name"
echo "  (niveau PROJET latoutfrancais), pas du nom du credential « Cursor »."
echo "  Tous les clients OAuth du même projet partagent ce libellé."
echo ""
echo "Pour voir « Cursor » à l'écran :"
echo "  A) Renommer l'app sur l'écran de consentement (impacte aussi PilotEcom), ou"
echo "  B) Créer un projet GCP dédié MCP avec consent screen « Cursor »."
