← back to Dw Vendor Microsites
merge-work/scaffold-house.sh
38 lines
#!/usr/bin/env bash
# scaffold-house.sh <house_key> <house_name> <subdomain>
# Scaffolds a merged house viewer from the template, allocates+records a port,
# runs a local smoke test, and upserts the manifest house entry (deploy_status PENDING).
set -euo pipefail
HK="${1:?house_key}"; HOUSE="${2:?house_name}"; SUB="${3:?subdomain}"
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$REPO"
source "$REPO/lib/manifest-lib.sh"
JSONL="$REPO/staging/${HK}.jsonl"
[ -f "$JSONL" ] || { echo "missing $JSONL — run merge-house.sh first" >&2; exit 1; }
COUNT="$(wc -l < "$JSONL" | tr -d ' ')"
VDIR="$REPO/vendors/${HK}/viewer"
echo "== scaffold $HK ($HOUSE) -> $VDIR ($COUNT skus) =="
mkdir -p "$VDIR"
cp "$REPO/template/server.js" "$VDIR/server.js"
rm -rf "$VDIR/public"; cp -R "$REPO/template/public" "$VDIR/public"
cat > "$VDIR/fieldmap.json" <<JSON
{
"title": "$(echo "$HOUSE" | sed 's/"/\\"/g')",
"samples_only": true,
"vendor_code": "${HK}",
"subdomain": "${SUB}"
}
JSON
PORT="$(bash "$REPO/lib/port-alloc.sh" "$HK")"
echo " port=$PORT"
# record port immediately so the next house's port-alloc skips it
manifest_upsert "$HK" "{\"port\":${PORT}}"
echo " local smoke..."
SMOKE="$(bash "$REPO/lib/smoke-local.sh" "$VDIR" "$JSONL" "$VDIR/fieldmap.json" "$COUNT")" || { echo "SMOKE FAIL: $SMOKE" >&2; exit 1; }
echo " smoke PASS — $SMOKE"
echo "$PORT"