#!/usr/bin/env bash
set -euo pipefail

for directory in public/wp-content/uploads public/vendor; do
  test -d "$directory"
done

test -s public/favicon.ico

while IFS= read -r -d '' asset; do
  bundled=".output/public/${asset#public/}"
  if [ ! -s "$bundled" ]; then
    echo "ERRO: asset ausente no bundle de produção: $bundled" >&2
    exit 1
  fi
done < <(find public/wp-content/uploads public/vendor public/favicon.ico -type f -print0)

python3 - <<'PYCODE'
import re
from pathlib import Path
from urllib.parse import unquote

references = set()
forbidden = re.compile(r"https://dome\.ventures/wp-content/uploads|fonts\.googleapis\.com|fonts\.gstatic\.com|/__l5e/assets-v1/")
manifest = Path("scripts/static-assets.manifest")
references.update("/wp-content/uploads/" + path for path in manifest.read_text().splitlines() if path.strip())
for file in [*Path("src").rglob("*"), *Path("public").rglob("*")]:
    if file.is_file() and file.suffix.lower() in {".ts", ".tsx", ".js", ".jsx", ".css", ".json", ".html", ".svg"}:
        content = file.read_text(errors="ignore")
        if forbidden.search(content):
            raise SystemExit(f"ERRO: referência de asset remota ou de preview Lovable em {file}")
        references.update(unquote(path.rstrip(",;")) for path in re.findall(r"/wp-content/uploads/[^\s\"'<>\\)]+", content))
missing = [path for path in sorted(references) if not Path(".output/public", path.lstrip("/")).is_file() or Path(".output/public", path.lstrip("/")).stat().st_size == 0]
if missing:
    print("ERRO: referências locais sem arquivo no bundle:", *missing, sep="\n", flush=True)
    raise SystemExit(1)
print(f"{len(references)} referências WordPress conferidas no bundle.")
PYCODE

node -e 'if (JSON.parse(require("node:fs").readFileSync(".output/nitro.json", "utf8")).preset !== "node-server") process.exit(1)'
test -s .output/server/index.mjs

echo "Assets locais presentes no bundle; preset Nitro node-server confirmado."
