From 77f545a262b4301d53c300fcc0a86e09ce2b4c68 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath <2+defunkt@users.noreply.github.com> Date: Tue, 16 Sep 2025 20:32:27 -0700 Subject: [PATCH] bun run deploy / bun push --- package.json | 4 +++- scripts/deploy.sh | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100755 scripts/deploy.sh 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"