#!/usr/bin/env bash ## # deploys from your dev machine to your NOSEputer set -euo pipefail source ./scripts/config.sh SOCK="$HOME/.ssh/cm-%r@%h:%p" # 1) Open a master connection (prompts once) ssh -MNf -o ControlMaster=yes -o ControlPersist=120 \ -o ControlPath="$SOCK" "$HOST" # 2) rsync (reuses the connection) # destructive sync for /app rsync -az --delete \ -e "ssh -o ControlPath=$SOCK" \ --exclude 'node_modules/' \ --exclude '.git/' \ ../app/ "$HOST:$DEST/app/" # additive sync for /bin and /www rsync -az \ -e "ssh -o ControlPath=$SOCK" \ --exclude 'node_modules/' \ --exclude '.git/' \ ../bin/ "$HOST:$DEST/bin/" rsync -az \ -e "ssh -o ControlPath=$SOCK" \ --exclude 'node_modules/' \ --exclude '.git/' \ ../www/ "$HOST:$DEST/www/" # 3) remote deploy (reuses the connection) ssh -o ControlPath="$SOCK" "$HOST" "cd $DEST && bun install --frozen-lockfile && sudo systemctl restart nose-pluto.service" # 4) close the master connection ssh -O exit -o ControlPath="$SOCK" "$HOST"