#!/usr/bin/env bash
# Auto-update lastmod field in staged content files
# This script should never block a commit - errors are warnings only

update_lastmod() {
    local file="$1"

    # Generate RFC3339 timestamp with timezone (e.g., 2025-11-08T16:19:07-06:00)
    local tz_offset=$(date +%z)
    local tz_formatted="${tz_offset:0:3}:${tz_offset:3:2}"  # Insert colon: -0600 -> -06:00
    local now=$(date +%Y-%m-%dT%H:%M:%S)${tz_formatted}

    # Only update if file has lastmod field
    if grep -q "^lastmod:" "$file"; then
        # Cross-platform sed -i (macOS vs Linux)
        if [[ "$OSTYPE" == "darwin"* ]]; then
            sed -i '' "s/^lastmod:.*$/lastmod: $now/" "$file"
        else
            sed -i "s/^lastmod:.*$/lastmod: $now/" "$file"
        fi
        git add "$file"
        echo "  Updated lastmod in $file"
    fi
}

# Get staged content files
staged_files=$(git diff --cached --name-only --diff-filter=ACM | grep -E '^content/.*\.md$' || true)

if [ -z "$staged_files" ]; then
    exit 0
fi

for file in $staged_files; do
    if [ -f "$file" ]; then
        update_lastmod "$file" || echo "Warning: Failed to update lastmod in $file"
    fi
done
