#!/bin/bash
set -euo pipefail
STAGING=/tmp/styller_outfits_staging
DEST_ASSETS=/home/ubuntu/portal/assets/animatedOutfits1092/outfits_anim
DEST_WWW=/home/ubuntu/www/html/animatedOutfits1092/outfits_anim
JSON=/tmp/LOOKTYPES_STYLLER_PORT.json
ZIP="${ZIP:-/tmp/styller_outfits_port.zip}"
export MERGE_MODE="${1:-merge}"  # merge | overwrite-all

rm -rf "$STAGING"
mkdir -p "$STAGING"
unzip -q -o "$ZIP" -d "$STAGING"
SRC="$STAGING/outfits_anim"

python3 - << PY
import json, shutil, os, sys
from pathlib import Path

mode = os.environ.get("MERGE_MODE", "merge")
json_path = Path("/tmp/LOOKTYPES_STYLLER_PORT.json")
src = Path("/tmp/styller_outfits_staging/outfits_anim")
dests = [
    Path("/home/ubuntu/portal/assets/animatedOutfits1092/outfits_anim"),
    Path("/home/ubuntu/www/html/animatedOutfits1092/outfits_anim"),
]

def copy_one(s: Path, d: Path, overwrite: bool):
    if d.exists():
        if not overwrite:
            return "skip"
        shutil.rmtree(d)
    shutil.copytree(s, d)
    return "copied"

stats = {"new_copied": 0, "new_skipped": 0, "fill_copied": 0, "overwrite": 0, "missing": []}

if mode == "overwrite-all":
    ids = sorted(int(p.name) for p in src.iterdir() if p.is_dir() and p.name.isdigit())
    for oid in ids:
        s = src / str(oid)
        for dest in dests:
            r = copy_one(s, dest / str(oid), True)
            if r == "copied":
                stats["overwrite"] += 1
else:
    data = json.loads(json_path.read_text(encoding="utf-8"))
    new_ids = data["new"]
    fill_ids = data["fill"]
    for oid in new_ids:
        s = src / str(oid)
        if not s.is_dir():
            stats["missing"].append(oid)
            continue
        for dest in dests:
            d = dest / str(oid)
            if d.exists():
                stats["new_skipped"] += 1
                continue
            shutil.copytree(s, d)
            stats["new_copied"] += 1
    for oid in fill_ids:
        s = src / str(oid)
        if not s.is_dir():
            stats["missing"].append(oid)
            continue
        for dest in dests:
            copy_one(s, dest / str(oid), True)
            stats["fill_copied"] += 1

print("MERGE_STATS", stats)
if stats["missing"]:
    print("WARN missing count:", len(stats["missing"]), "sample:", stats["missing"][:10])
PY

for ROOT in /home/ubuntu/portal/assets/animatedOutfits1092 /home/ubuntu/www/html/animatedOutfits1092; do
  cd "$ROOT"
  php cacheGenerator.php
done

echo "ASSETS_COUNT $(ls -1 \"$DEST_ASSETS\" | wc -l)"
echo "WWW_COUNT $(ls -1 \"$DEST_WWW\" | wc -l)"
