#!/usr/bin/env bash set -e # Get absolute path of this script's directory SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" ROOT_DIR="$SCRIPT_DIR/.." # Load config source "$ROOT_DIR/scripts/config.sh" git push origin main # SSH to target: pull, build, sync apps, restart ssh "$SSH_HOST" bash <<'SCRIPT' set -e DEST="${DEST:-$HOME/toes}" APPS_DIR="${APPS_DIR:-$HOME/apps}" DATA_DIR="${DATA_DIR:-$HOME/data}" REPOS_DIR="$DATA_DIR/repos" cd "$DEST" && git checkout -- bun.lock && git pull origin main && bun install && rm -rf dist && bun run build && bun run cli:build && sudo cp dist/toes /usr/local/bin/toes echo "=> Syncing default apps..." for app_dir in "$DEST"/apps/*/; do app=$(basename "$app_dir") [ -f "$app_dir/package.json" ] || continue target="$APPS_DIR/$app" mkdir -p "$target" cp -a "$app_dir"/. "$target"/ echo " $app" (cd "$target" && bun install --frozen-lockfile 2>/dev/null || bun install) done echo "=> Initializing bare repos..." mkdir -p "$REPOS_DIR" for app_dir in "$DEST"/apps/*/; do app=$(basename "$app_dir") [ -f "$app_dir/package.json" ] || continue bare="$REPOS_DIR/$app.git" if [ ! -d "$bare" ]; then git init --bare -b main "$bare" > /dev/null git -C "$bare" config http.receivepack true fi tmp=$(mktemp -d) cp -a "$app_dir"/. "$tmp"/ git -C "$tmp" init -b main > /dev/null 2>&1 git -C "$tmp" add -A > /dev/null git -C "$tmp" -c user.name=toes -c user.email=toes@localhost commit -m "deploy" > /dev/null 2>&1 git -C "$tmp" push --force "$bare" main > /dev/null 2>&1 rm -rf "$tmp" echo " $app" done sudo systemctl restart toes.service SCRIPT b=$'\033[1m' d=$'\033[2m' g=$'\033[32m' c=$'\033[36m' r=$'\033[0m' echo "" echo " ${b}${g}🐾 Deployed${r} to ${b}$SSH_HOST${r}" echo " ${d}─────────────────────────────${r}" echo "" echo " Dashboard: ${c}$URL${r}" echo "" echo " ${d}Grab the CLI:${r}" echo " ${c}curl -fsSL $URL/install | bash${r}" echo ""