#!/usr/bin/env bash # Usage: publish-projects.sh [vps-host] [branch] # Can be called from any directory — no dependency on the repo being the working dir. set -euo pipefail VAULT_PROJECTS='/Users/adrian/Obsidian/Web/adrian-altner-com/content/projects' VPS="${1:-hetzner}" REMOTE_BRANCH="${2:-main}" REMOTE_BASE='/opt/websites/www.adrian-altner.com' REMOTE_PROJECTS="${REMOTE_BASE}/src/content/projects" # --- 1. Sync vault to VPS --- ssh "$VPS" " set -euo pipefail cd '$REMOTE_BASE' git fetch --prune origin '$REMOTE_BRANCH' git checkout '$REMOTE_BRANCH' git reset --hard 'origin/$REMOTE_BRANCH' git clean -fd -e .env -e .env.production mkdir -p '$REMOTE_PROJECTS' " rsync -az --delete \ --include='*/' \ --include='*.md' \ --include='*.mdx' \ --include='*.jpg' \ --include='*.jpeg' \ --include='*.JPG' \ --include='*.JPEG' \ --include='*.png' \ --include='*.PNG' \ --include='*.webp' \ --include='*.gif' \ --exclude='.DS_Store' \ --exclude='*' \ "$VAULT_PROJECTS/" "$VPS:$REMOTE_PROJECTS/" # --- 2. Build + cleanup --- ssh "$VPS" " set -euo pipefail cd '$REMOTE_BASE' podman-compose -f compose.yml up --build -d --force-recreate podman image prune -af podman builder prune -af " echo "Projects deploy done via $VPS (branch: $REMOTE_BRANCH)."