#!/bin/bash
# Check HTML structure for a site directory
# Usage: tools/check/html-check.sh <site-dir>
# Example: tools/check/html-check.sh sites/example.com-v1
# Exit codes: 0=valid, 1=validation errors, 2=input error

set -e

SITE_DIR="${1:-.}"

if [[ ! -d "$SITE_DIR" ]]; then
    echo "ERROR:directory_not_found:$SITE_DIR"
    exit 2
fi

HTML_FILE="$SITE_DIR/index.html"

if [[ ! -f "$HTML_FILE" ]]; then
    echo "ERROR:file_not_found:$HTML_FILE"
    exit 2
fi

echo "=== HTML Check: $(basename "$SITE_DIR") ==="
echo ""

ERRORS=0

# Check DOCTYPE
if grep -q "<!DOCTYPE html>" "$HTML_FILE"; then
    echo "✓ DOCTYPE declaration"
else
    echo "✗ Missing DOCTYPE declaration"
    ERRORS=$((ERRORS + 1))
fi

# Check html tag
if grep -q "<html" "$HTML_FILE"; then
    echo "✓ <html> tag"
else
    echo "✗ Missing <html> tag"
    ERRORS=$((ERRORS + 1))
fi

# Check head tag
if grep -q "<head>" "$HTML_FILE"; then
    echo "✓ <head> tag"
else
    echo "✗ Missing <head> tag"
    ERRORS=$((ERRORS + 1))
fi

# Check title tag
if grep -q "<title>" "$HTML_FILE"; then
    echo "✓ <title> tag"
else
    echo "✗ Missing <title> tag"
    ERRORS=$((ERRORS + 1))
fi

# Check viewport meta
if grep -q 'name="viewport"' "$HTML_FILE"; then
    echo "✓ Viewport meta tag"
else
    echo "✗ Missing viewport meta tag"
    ERRORS=$((ERRORS + 1))
fi

# Check body tag
if grep -q "<body" "$HTML_FILE"; then
    echo "✓ <body> tag"
else
    echo "✗ Missing <body> tag"
    ERRORS=$((ERRORS + 1))
fi

# Check CSS link
if grep -q 'rel="stylesheet"' "$HTML_FILE" || grep -q "<style>" "$HTML_FILE"; then
    echo "✓ CSS (linked or inline)"
else
    echo "? No CSS found (may be intentional)"
fi

# Check JS reference
if grep -q "<script" "$HTML_FILE"; then
    echo "✓ JavaScript reference"
else
    echo "? No JavaScript found (may be intentional)"
fi

# Check for closing tags
if grep -q "</html>" "$HTML_FILE"; then
    echo "✓ Closing </html> tag"
else
    echo "✗ Missing closing </html> tag"
    ERRORS=$((ERRORS + 1))
fi

echo ""
if [[ $ERRORS -eq 0 ]]; then
    echo "OK:html_valid"
else
    echo "FAIL:html_invalid:$ERRORS issues"
    exit 1
fi
