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

BASE_URL="https://ai.mertcankarakulak.com/v1"
MODEL="abliteration-abliterated-model-large-flash"
CODEX_DIR="${CODEX_HOME:-$HOME/.codex}"
CONFIG_FILE="$CODEX_DIR/config.toml"
ENV_FILE="$CODEX_DIR/.env"
BEGIN_MARK="# BEGIN MERT_AI_MANAGED"
END_MARK="# END MERT_AI_MANAGED"
MODE="install"
if [[ "${1:-}" == "--dry-run" ]]; then MODE="dry-run"; fi
if [[ "${1:-}" == "--undo" ]]; then MODE="undo"; fi

latest_backup() { ls -1t "$1".mert-ai.*.bak 2>/dev/null | head -n 1 || true; }
if [[ "$MODE" == "undo" ]]; then
  config_backup="$(latest_backup "$CONFIG_FILE")"
  env_backup="$(latest_backup "$ENV_FILE")"
  [[ -n "$config_backup" ]] && cp "$config_backup" "$CONFIG_FILE"
  [[ -n "$env_backup" ]] && cp "$env_backup" "$ENV_FILE"
  if [[ -z "$config_backup" && -z "$env_backup" ]]; then
    echo "Geri alınacak Mert AI yedeği bulunamadı." >&2; exit 1
  fi
  echo "Son Mert AI yedeği geri yüklendi."; exit 0
fi

echo "Codex dizini: $CODEX_DIR"
echo "Provider: Mert AI · $MODEL"
if [[ "$MODE" == "dry-run" ]]; then
  echo "Dry-run: config.toml ve .env yedeklenip yalnız Mert AI bloğu güncellenecek."
  exit 0
fi

API_KEY="${MERT_AI_API_KEY:-}"
if [[ -z "$API_KEY" ]]; then
  read -rsp "Mert AI API anahtarı: " API_KEY; echo
fi
if [[ -z "$API_KEY" ]]; then echo "API anahtarı boş olamaz." >&2; exit 1; fi

if ! curl -fsS --connect-timeout 10 --max-time 30 \
  -H "Authorization: Bearer $API_KEY" "$BASE_URL/models" | grep -Fq "$MODEL"; then
  echo "Anahtar veya model doğrulanamadı; hiçbir dosya değiştirilmedi." >&2; exit 1
fi

mkdir -p "$CODEX_DIR"
stamp="$(date -u +%Y%m%dT%H%M%SZ)"
[[ -f "$CONFIG_FILE" ]] && cp "$CONFIG_FILE" "$CONFIG_FILE.mert-ai.$stamp.bak"
[[ -f "$ENV_FILE" ]] && cp "$ENV_FILE" "$ENV_FILE.mert-ai.$stamp.bak"

clean_config="$(mktemp)"
if [[ -f "$CONFIG_FILE" ]]; then
  awk -v begin="$BEGIN_MARK" -v end="$END_MARK" '
    $0 == begin { managed=1; next }
    $0 == end { managed=0; next }
    managed { next }
    /^\[/ { table=1 }
    !table && /^[[:space:]]*model(_provider)?[[:space:]]*=/ { next }
    { print }
  ' "$CONFIG_FILE" > "$clean_config"
fi
cat >> "$clean_config" <<EOF

$BEGIN_MARK
model = "$MODEL"
model_provider = "mertai"

[model_providers.mertai]
name = "Mert AI"
base_url = "$BASE_URL"
env_key = "MERT_AI_API_KEY"
wire_api = "responses"
$END_MARK
EOF

clean_env="$(mktemp)"
if [[ -f "$ENV_FILE" ]]; then
  awk -v begin="$BEGIN_MARK" -v end="$END_MARK" '
    $0 == begin { managed=1; next }
    $0 == end { managed=0; next }
    managed { next }
    /^[[:space:]]*MERT_AI_API_KEY=/ { next }
    { print }
  ' "$ENV_FILE" > "$clean_env"
fi
printf '\n%s\nMERT_AI_API_KEY=%s\n%s\n' "$BEGIN_MARK" "$API_KEY" "$END_MARK" >> "$clean_env"
mv "$clean_config" "$CONFIG_FILE"
mv "$clean_env" "$ENV_FILE"
chmod 600 "$CONFIG_FILE" "$ENV_FILE"
unset API_KEY
echo "Kurulum tamamlandı. Codex CLI, masaüstü veya IDE eklentisini tamamen kapatıp yeniden açın."
echo "CLI doğrulaması: codex /status"
