#!/usr/bin/env bash
# Publish Upbeat Bytes: build the frontend, sync it to the live Caddy site,
# rebuild/restart the API container, and reload Caddy. One command to redeploy.
set -euo pipefail

repo="$(cd "$(dirname "$0")/.." && pwd)"
site="/home/jay/srv/sites/upbeatbytes"
api_compose="/home/jay/srv/upbeatbytes/compose.yaml"

echo "→ building frontend"
( cd "$repo/frontend" && npm run build )

echo "→ syncing static site to $site (assets first, shell + SW last)"
bash "$repo/deploy/sync-static.sh" "$repo/frontend/build" "$site"

echo "→ rebuilding/refreshing API container"
docker compose -f "$api_compose" up -d --build

echo "→ reloading Caddy"
docker exec caddy caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile

# Non-fatal smoke check: the digest masthead points at this static asset, so a
# missing/unserved logo-email.png would silently break the newsletter header.
echo "→ smoke check"
curl -fsS -o /dev/null -w '  logo-email.png → %{http_code} %{content_type}\n' \
  https://upbeatbytes.com/logo-email.png \
  || echo "  ⚠ logo-email.png is not being served — the digest masthead would break!"

echo "✓ Published Upbeat Bytes → https://upbeatbytes.com"
