← back to Allnewsdaily
scripts/push-wire.sh
23 lines
#!/usr/bin/env bash
# Rebuild the wire locally (needs Ollama) then rsync ONLY data/wire.json to prod.
# Runs from a launchd job on this Mac every ~10 min. Reversible: unload the job to stop.
set -euo pipefail
cd "$(dirname "$0")/.."
PROD="${PROD_HOST:-root@45.61.58.125}"
REMOTE="/root/Projects/allnewsdaily/data/wire.json"
# Resolve node robustly (launchd has a minimal PATH).
NODE="$(command -v node || true)"
for cand in /opt/homebrew/bin/node /usr/local/bin/node /usr/bin/node; do
[ -z "$NODE" ] && [ -x "$cand" ] && NODE="$cand"
done
[ -n "$NODE" ] || { echo "[push-wire] node not found"; exit 3; }
"$NODE" scripts/build-wire.js || { echo "[push-wire] build failed, not pushing"; exit 1; }
# only push a non-empty, valid file
"$NODE" -e "const w=require('./data/wire.json'); if(!w.columns||!w.columns.length){process.exit(2)}" || { echo "[push-wire] wire.json invalid, not pushing"; exit 2; }
rsync -az -e "ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new" data/wire.json "$PROD:$REMOTE"
echo "[push-wire] pushed $(date -u +%FT%TZ) → $PROD:$REMOTE"