#!/bin/bash

## Description: Generate index.html overview page with branded template
## Usage: generate-index
## Example: ddev generate-index

set -e

# =============================================================================
# VARIABLE EXTRACTION
# =============================================================================

# Get DDEV project name
DDEV_PROJECT=$(ddev describe -j 2>/dev/null | jq -r '.name' || basename "$(pwd)")

# Get extension key from directory name
EXTENSION_KEY=$(basename "$(pwd)")

# Extract data from composer.json if available
COMPOSER_FILE="/var/www/html/composer.json"
if [[ -f "$COMPOSER_FILE" ]]; then
    COMPOSER_PACKAGE=$(jq -r '.name // empty' "$COMPOSER_FILE")
    EXTENSION_NAME=$(jq -r '.extra.typo3.extension-key // .extra["extension-key"] // empty' "$COMPOSER_FILE")
    EXTENSION_DESCRIPTION=$(jq -r '.description // empty' "$COMPOSER_FILE")

    # Extract GitHub repo from homepage or support.source
    GITHUB_REPO=$(jq -r '.homepage // .support.source // empty' "$COMPOSER_FILE" | grep -oE 'https://github.com/[^/]+/[^/\"]+' || echo "")

    # Fallback extension name from composer package
    if [[ -z "$EXTENSION_NAME" && -n "$COMPOSER_PACKAGE" ]]; then
        EXTENSION_NAME=$(echo "$COMPOSER_PACKAGE" | sed 's/.*\///' | sed 's/-/_/g')
    fi
fi

# Fallback values
EXTENSION_NAME=${EXTENSION_NAME:-$EXTENSION_KEY}
EXTENSION_DESCRIPTION=${EXTENSION_DESCRIPTION:-"TYPO3 Extension Development Environment"}
COMPOSER_PACKAGE=${COMPOSER_PACKAGE:-"vendor/$EXTENSION_KEY"}
GITHUB_REPO=${GITHUB_REPO:-"https://github.com/example/$EXTENSION_KEY"}

# Derive TER extension key from composer package or extension key
# Format: vendor/t3x-ext-name -> ext_name or vendor/ext -> ext
TER_EXTENSION_KEY=$(echo "$COMPOSER_PACKAGE" | sed 's/.*\///' | sed 's/^t3x-//' | sed 's/^nr-//' | sed 's/-/_/g')

# Make extension name human-readable for display
EXTENSION_DISPLAY_NAME=$(echo "$EXTENSION_NAME" | sed 's/_/ /g' | sed 's/-/ /g' | sed 's/\b\(.\)/\u\1/g')

# =============================================================================
# GIT INFORMATION
# =============================================================================

GIT_BRANCH="main"
GIT_COMMIT_SHORT="0000000"
GIT_COMMIT_MSG="No commit"

if command -v git &> /dev/null && git rev-parse --is-inside-work-tree &> /dev/null 2>&1; then
    GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "main")
    GIT_COMMIT_SHORT=$(git rev-parse --short HEAD 2>/dev/null || echo "0000000")
    GIT_COMMIT_MSG=$(git log -1 --pretty=%s 2>/dev/null | head -c 50 || echo "No commit")

    # Escape special characters for sed
    GIT_COMMIT_MSG=$(echo "$GIT_COMMIT_MSG" | sed 's/[&/\]/\\&/g')
fi

# =============================================================================
# PR INFORMATION (GitHub Actions environment)
# =============================================================================

PR_NUMBER=""
PR_URL=""
PR_TITLE=""

# Check for GitHub Actions PR environment variables
if [[ -n "${GITHUB_HEAD_REF:-}" ]]; then
    # We're in a PR context
    PR_NUMBER="${GITHUB_EVENT_PULL_REQUEST_NUMBER:-}"
    if [[ -n "$PR_NUMBER" && -n "${GITHUB_REPOSITORY:-}" ]]; then
        PR_URL="https://github.com/${GITHUB_REPOSITORY}/pull/${PR_NUMBER}"
        PR_TITLE="${GITHUB_EVENT_PULL_REQUEST_TITLE:-PR #$PR_NUMBER}"
    fi
fi

# =============================================================================
# TEMPLATE SELECTION
# =============================================================================

TEMPLATE_DIR="/var/www/html/.ddev"
IS_NETRESEARCH=false

# Detect Netresearch project by checking composer.json vendor
if [[ -n "$COMPOSER_PACKAGE" ]]; then
    VENDOR=$(echo "$COMPOSER_PACKAGE" | cut -d'/' -f1)
    if [[ "$VENDOR" == "netresearch" ]]; then
        IS_NETRESEARCH=true
    fi
fi

# Select template based on vendor
if [[ "$IS_NETRESEARCH" == true ]]; then
    TEMPLATE_FILE="$TEMPLATE_DIR/index.html.netresearch.template"
    echo "🔵 Detected Netresearch project - using Netresearch branded template"
else
    TEMPLATE_FILE="$TEMPLATE_DIR/index.html.typo3.template"
    echo "🟠 Using TYPO3 branded template"
fi

# Fallback to TYPO3 template if selected template not found
if [[ ! -f "$TEMPLATE_FILE" ]]; then
    TEMPLATE_FILE="$TEMPLATE_DIR/index.html.typo3.template"
    echo "⚠️  Selected template not found, falling back to TYPO3 template"
fi

if [[ ! -f "$TEMPLATE_FILE" ]]; then
    echo "❌ Error: No template file found!"
    exit 1
fi

# =============================================================================
# GENERATE INDEX.HTML
# =============================================================================

OUTPUT_FILE="/var/www/html/index.html"

# Create a temporary file for processing
TEMP_FILE=$(mktemp)

# Copy template to temp file
cp "$TEMPLATE_FILE" "$TEMP_FILE"

# Replace all template variables
sed -i \
    -e "s|{{EXTENSION_NAME}}|$EXTENSION_DISPLAY_NAME|g" \
    -e "s|{{EXTENSION_DESCRIPTION}}|$EXTENSION_DESCRIPTION|g" \
    -e "s|{{EXTENSION_KEY}}|$EXTENSION_KEY|g" \
    -e "s|{{DDEV_PROJECT}}|$DDEV_PROJECT|g" \
    -e "s|{{COMPOSER_PACKAGE}}|$COMPOSER_PACKAGE|g" \
    -e "s|{{TER_EXTENSION_KEY}}|$TER_EXTENSION_KEY|g" \
    -e "s|{{GITHUB_REPO}}|$GITHUB_REPO|g" \
    -e "s|{{GIT_BRANCH}}|$GIT_BRANCH|g" \
    -e "s|{{GIT_COMMIT_SHORT}}|$GIT_COMMIT_SHORT|g" \
    -e "s|{{GIT_COMMIT_MSG}}|$GIT_COMMIT_MSG|g" \
    "$TEMP_FILE"

# Handle PR info block - remove if no PR, otherwise replace variables
if [[ -z "$PR_NUMBER" ]]; then
    # Remove the PR info block entirely
    sed -i '/<!-- BEGIN_PR_INFO -->/,/<!-- END_PR_INFO -->/d' "$TEMP_FILE"
else
    # Replace PR variables
    sed -i \
        -e "s|{{PR_NUMBER}}|$PR_NUMBER|g" \
        -e "s|{{PR_URL}}|$PR_URL|g" \
        -e "s|{{PR_TITLE}}|$PR_TITLE|g" \
        "$TEMP_FILE"
    # Remove the comment markers
    sed -i \
        -e '/<!-- BEGIN_PR_INFO -->/d' \
        -e '/<!-- END_PR_INFO -->/d' \
        "$TEMP_FILE"
fi

# Move temp file to output
mv "$TEMP_FILE" "$OUTPUT_FILE"

# =============================================================================
# OUTPUT
# =============================================================================

echo ""
echo "✅ index.html generated successfully!"
echo ""
echo "📋 Configuration:"
echo "   Extension: $EXTENSION_DISPLAY_NAME"
echo "   Package:   $COMPOSER_PACKAGE"
echo "   TER Key:   $TER_EXTENSION_KEY"
echo "   Branch:    $GIT_BRANCH"
echo "   Template:  $(basename "$TEMPLATE_FILE")"
echo ""
echo "🌐 Access your project at: https://$DDEV_PROJECT.ddev.site/"
