#!/usr/bin/env bash
# Crée le site Umami et enregistre le website_id dans infra/umami/websites.json
# Usage : ./scripts/umami-bootstrap.sh <base_url> <local|production>

set -euo pipefail

BASE_URL="${1:?Base URL Umami (ex. http://127.0.0.1:3000)}"
ENV_KEY="${2:?local ou production}"

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CONFIG="$ROOT/infra/umami/websites.json"
USER="${UMAMI_ADMIN_USER:-admin}"
PASS="${UMAMI_ADMIN_PASSWORD:-umami}"

if [[ "$ENV_KEY" == "local" ]]; then
	NAME="arnaud-merigeau.fr (local)"
	DOMAIN="localhost"
else
	NAME="arnaud-merigeau.fr"
	DOMAIN="www.arnaud-merigeau.fr"
fi

echo "Connexion Umami ($BASE_URL)…"
TOKEN="$(curl -sf "${BASE_URL}/api/auth/login" \
	-H 'Content-Type: application/json' \
	-d "{\"username\":\"${USER}\",\"password\":\"${PASS}\"}" \
	| python3 -c 'import json,sys; print(json.load(sys.stdin).get("token",""))')"

if [[ -z "$TOKEN" ]]; then
	echo "Échec login Umami (admin/umami par défaut)." >&2
	exit 1
fi

echo "Création / recherche du site « ${NAME} »…"
WEBSITE_ID="$(curl -sf "${BASE_URL}/api/websites" \
	-H "Authorization: Bearer ${TOKEN}" \
	| python3 -c "
import json,sys
name = '''${NAME}'''
payload = json.load(sys.stdin)
sites = payload.get('data', payload) if isinstance(payload, dict) else payload
if not isinstance(sites, list):
    sites = []
for site in sites:
    if isinstance(site, dict) and site.get('name') == name:
        print(site.get('id',''))
        break
")"

if [[ -z "$WEBSITE_ID" ]]; then
	WEBSITE_ID="$(curl -sf "${BASE_URL}/api/websites" \
		-X POST \
		-H "Authorization: Bearer ${TOKEN}" \
		-H 'Content-Type: application/json' \
		-d "{\"name\":\"${NAME}\",\"domain\":\"${DOMAIN}\"}" \
		| python3 -c 'import json,sys; print(json.load(sys.stdin).get("id",""))')"
fi

if [[ -z "$WEBSITE_ID" ]]; then
	echo "Impossible de récupérer le website_id." >&2
	exit 1
fi

python3 - "$CONFIG" "$ENV_KEY" "$WEBSITE_ID" <<'PY'
import json, sys
path, env_key, website_id = sys.argv[1:4]
with open(path, 'r', encoding='utf-8') as fh:
    data = json.load(fh)
data.setdefault(env_key, {})
data[env_key]['website_id'] = website_id
with open(path, 'w', encoding='utf-8') as fh:
    json.dump(data, fh, indent=2)
    fh.write('\n')
print(f"website_id {env_key} = {website_id}")
PY

echo "Pensez à changer le mot de passe admin Umami après la première connexion."
