BillTracker/deploy.sh

32 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# deploy.sh — build then sync bill-tracker to server
# Usage: ./deploy.sh user@nebula [remote-path]
set -euo pipefail
SERVER="${1:?Usage: ./deploy.sh user@nebula [remote-path]}"
REMOTE_PATH="${2:-/opt/bill-tracker}"
# ── Pre-flight ────────────────────────────────────────────────────────────────
if [ ! -f package.json ]; then
echo "ERROR: Run this from the bill-tracker project root"
exit 1
fi
if ls db/*.db 2>/dev/null | grep -q .; then
echo "✓ Local DB found — excluded from sync (data stays on server)"
fi
# ── Build React app ───────────────────────────────────────────────────────────
echo "→ Building UI..."
npm run build
# ── Sync (dist/ is included, src/ and public/ are excluded) ──────────────────
echo "→ Syncing to ${SERVER}:${REMOTE_PATH}"
rsync -avz --delete \
--exclude-from='.rsyncignore' \
./ "${SERVER}:${REMOTE_PATH}/"
echo "✓ Done"