#!/usr/bin/env bash ## # deploys from your dev machine to your NOSEputer set -euo pipefail HOST="chris@nose-pluto.local" DEST="~/pluto" NOSE_DIR="~/nose" 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) rsync -az --delete \ -e "ssh -o ControlPath=$SOCK" \ --exclude 'node_modules/' \ --exclude '.git/' \ ./ "$HOST:$DEST/" # 3) ensure $NOSE_DIR exists ssh -o ControlPath="$SOCK" "$HOST" "mkdir -p $NOSE_DIR/{www,bin}" # 4) remote deploy (reuses the connection) ssh -o ControlPath="$SOCK" "$HOST" "cd $DEST && bun install --frozen-lockfile && sudo systemctl restart nose-pluto.service" # 5) close the master connection ssh -O exit -o ControlPath="$SOCK" "$HOST"