#!/bin/sh # Deploy the latest local code to NAS. # Usage: sh deploy/deploy.sh # Prerequisites: client has been built (`npm run build` in client/) APP="$(cd "$(dirname "$0")/.." && pwd)" NAS_HOST="${1:-ericwyuan@192.168.50.64}" NAS_PORT="${2:-2222}" NAS_PATH="/volume1/web/garmin-health-lab" NAS_PASS="iLoveJava5" set -e echo "=== Building frontend ===" cd "$APP/client" npm run build 2>&1 | tail -3 echo "=== Syncing files to NAS (excluding .venv) ===" cd "$APP" tar cz \ --exclude='backend/.venv' \ --exclude='backend/__pycache__' \ --exclude='backend/*.pyc' \ --exclude='node_modules' \ -f /tmp/garmin_deploy.tar.gz \ backend/ deploy/ sshpass -p "$NAS_PASS" scp -P "$NAS_PORT" -o StrictHostKeyChecking=no \ /tmp/garmin_deploy.tar.gz "${NAS_HOST}:/tmp/garmin_deploy.tar.gz" sshpass -p "$NAS_PASS" ssh -p "$NAS_PORT" -o StrictHostKeyChecking=no \ "$NAS_HOST" "echo '$NAS_PASS' | sudo -S tar xzf /tmp/garmin_deploy.tar.gz -C $NAS_PATH/ && rm /tmp/garmin_deploy.tar.gz" rm -f /tmp/garmin_deploy.tar.gz echo "=== Restarting service ===" sshpass -p "$NAS_PASS" ssh -p "$NAS_PORT" -o StrictHostKeyChecking=no \ "$NAS_HOST" "echo '$NAS_PASS' | sudo -S $NAS_PATH/deploy/start.sh 2>&1" echo "=== Done ==="