#!/bin/bash
# =============================================================================
# Gitea Branch Protection Setup
# =============================================================================
# Dieses Script richtet Branch Protection für das breakpilot-pwa Repository ein.
#
# Voraussetzungen:
#   1. Gitea API Token erstellen unter:
#      http://macmini:3003/user/settings/applications
#      → "Generate New Token" → Name: "branch-protection" → Alle Rechte
#
#   2. Token als Umgebungsvariable setzen:
#      export GITEA_TOKEN="dein-token-hier"
#
#   3. Script ausführen:
#      ./scripts/setup-branch-protection.sh
# =============================================================================

set -e

# Konfiguration
GITEA_URL="http://macmini:3003"
OWNER="pilotadmin"
REPO="breakpilot-pwa"
BRANCH="main"

# Prüfe Token
if [ -z "$GITEA_TOKEN" ]; then
    echo "=============================================="
    echo "FEHLER: GITEA_TOKEN nicht gesetzt!"
    echo "=============================================="
    echo ""
    echo "Schritte zum Einrichten:"
    echo ""
    echo "1. Öffne: http://macmini:3003/user/settings/applications"
    echo ""
    echo "2. Klicke 'Generate New Token'"
    echo "   - Name: branch-protection"
    echo "   - Wähle alle Berechtigungen (oder mindestens 'repo')"
    echo ""
    echo "3. Kopiere den Token und führe aus:"
    echo "   export GITEA_TOKEN=\"dein-token-hier\""
    echo "   ./scripts/setup-branch-protection.sh"
    echo ""
    exit 1
fi

echo "=============================================="
echo "Gitea Branch Protection Setup"
echo "=============================================="
echo ""
echo "Repository: $OWNER/$REPO"
echo "Branch: $BRANCH"
echo ""

# Prüfe API-Zugang
echo "[1/3] Prüfe API-Zugang..."
API_CHECK=$(curl -s -o /dev/null -w "%{http_code}" \
    -H "Authorization: token $GITEA_TOKEN" \
    "$GITEA_URL/api/v1/repos/$OWNER/$REPO")

if [ "$API_CHECK" != "200" ]; then
    echo "FEHLER: API-Zugang fehlgeschlagen (HTTP $API_CHECK)"
    echo "Prüfe Token und Repository-Name."
    exit 1
fi
echo "      ✓ API-Zugang OK"

# Branch Protection einrichten
echo "[2/3] Richte Branch Protection ein..."

# Lösche bestehende Protection falls vorhanden
curl -s -X DELETE \
    -H "Authorization: token $GITEA_TOKEN" \
    "$GITEA_URL/api/v1/repos/$OWNER/$REPO/branch_protections/$BRANCH" \
    >/dev/null 2>&1 || true

# Erstelle neue Branch Protection
RESPONSE=$(curl -s -X POST \
    -H "Authorization: token $GITEA_TOKEN" \
    -H "Content-Type: application/json" \
    "$GITEA_URL/api/v1/repos/$OWNER/$REPO/branch_protections" \
    -d '{
        "branch_name": "main",
        "enable_push": false,
        "enable_push_whitelist": true,
        "push_whitelist_usernames": [],
        "push_whitelist_deploy_keys": false,
        "enable_merge_whitelist": false,
        "enable_status_check": true,
        "status_check_contexts": [],
        "required_approvals": 1,
        "enable_approvals_whitelist": false,
        "block_on_rejected_reviews": true,
        "block_on_outdated_branch": true,
        "dismiss_stale_approvals": true,
        "require_signed_commits": false,
        "protected_file_patterns": "",
        "unprotected_file_patterns": ""
    }')

if echo "$RESPONSE" | grep -q "branch_name"; then
    echo "      ✓ Branch Protection aktiviert"
else
    echo "      ⚠ Möglicherweise bereits eingerichtet oder Fehler:"
    echo "$RESPONSE" | head -5
fi

# Zusammenfassung
echo "[3/3] Fertig!"
echo ""
echo "=============================================="
echo "Branch Protection für 'main' ist aktiv:"
echo "=============================================="
echo ""
echo "  ✓ Direkter Push auf 'main' blockiert"
echo "  ✓ Pull Request erforderlich"
echo "  ✓ Mindestens 1 Approval erforderlich"
echo "  ✓ Veraltete Approvals werden verworfen"
echo "  ✓ Blockiert bei abgelehnten Reviews"
echo ""
echo "Team-Workflow:"
echo "  1. git checkout -b feature/mein-feature"
echo "  2. git push -u origin feature/mein-feature"
echo "  3. Pull Request erstellen in Gitea"
echo "  4. Code Review + Approval"
echo "  5. Merge in main"
echo ""
echo "Gitea: http://macmini:3003/$OWNER/$REPO"
echo ""
