diff --git a/package.json b/package.json index 48adeca..a301d3c 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "private": true, "scripts": { "start": "bun src/server.tsx", - "dev": "env BUN_HOT=1 bun --hot src/server.tsx" + "dev": "env BUN_HOT=1 bun --hot src/server.tsx", + "deploy": "./scripts/deploy.sh", + "push": "./scripts/deploy.sh" }, "alias": { "@utils": "./src/utils.tsx", diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..6321f83 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -euo pipefail + +HOST="chris@nose-pluto.local" +DEST="~/pluto" +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) remote install (reuses the connection) +ssh -o ControlPath="$SOCK" "$HOST" "cd $DEST && bun install --frozen-lockfile" + +# 4) close the master connection +ssh -O exit -o ControlPath="$SOCK" "$HOST"