push (1308B)
1 #!/bin/sh 2 # Sync local tooling to the DO box under ~/repos/. 3 # Usage: GIT_HOST=ryan@your-box ./push 4 set -eu 5 6 DIR=$(cd "$(dirname "$0")" && pwd) 7 [ -f "$DIR/.env" ] || { echo "create .env from .env.example"; exit 1; } 8 . "$DIR/.env" 9 10 : "${GIT_HOST:?set GIT_HOST, e.g. ryan@your-do-box}" 11 : "${GIT_HOSTNAME:?set GIT_HOSTNAME in .env}" 12 : "${PUBLIC_DOMAIN:?set PUBLIC_DOMAIN in .env}" 13 : "${BUNNY_ZONE:?set BUNNY_ZONE in .env}" 14 15 ssh "$GIT_HOST" 'mkdir -p ~/repos' 16 17 rsync -av --delete "$DIR/bin/" "$GIT_HOST:repos/bin/" 18 rsync -av --delete "$DIR/assets/" "$GIT_HOST:repos/assets/" 19 rsync -av --delete "$DIR/caddy/" "$GIT_HOST:repos/caddy/" 20 21 # Server-side config for scripts (add-repo, etc.) 22 ssh "$GIT_HOST" "cat > ~/repos/config.env" <<EOF 23 GIT_HOSTNAME=$GIT_HOSTNAME 24 PUBLIC_DOMAIN=$PUBLIC_DOMAIN 25 BUNNY_ZONE=$BUNNY_ZONE 26 EOF 27 28 ssh "$GIT_HOST" ' 29 set -eu 30 chmod +x ~/repos/bin/* 31 . ~/repos/config.env 32 TS=$(tailscale ip -4 2>/dev/null | head -n1 || true) 33 if [ -n "$TS" ]; then 34 sed -i "s|__TAILSCALE_IP__|$TS|g; s|__GIT_HOSTNAME__|$GIT_HOSTNAME|g" ~/repos/caddy/*.caddy 35 sudo systemctl reload caddy 2>/dev/null || true 36 fi 37 if command -v stagit >/dev/null; then 38 ~/repos/bin/stagit-update 39 else 40 echo "stagit not installed yet — run: ~/repos/bin/bringup" 41 fi 42 '