#!/bin/bash # Sync ralpha-ue5 assets on droplet boot # Called by systemd service before launching UE5 set -e REPO_DIR="${RALPHA_UE5_DIR:-/opt/ralpha-ue5}" CATALOGUE_PATH="$REPO_DIR/RalphaData/catalogue/catalogue.json" HASH_FILE="/var/lib/ralpha/catalogue-hash" LOG_FILE="/var/log/ralpha/sync.log" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } mkdir -p "$(dirname "$LOG_FILE")" mkdir -p "$(dirname "$HASH_FILE")" log "Starting ralpha-ue5 sync..." cd "$REPO_DIR" # Store previous catalogue hash PREV_HASH="" if [ -f "$HASH_FILE" ]; then PREV_HASH=$(cat "$HASH_FILE") fi # Fetch and pull latest log "Fetching from origin..." git fetch origin # Check if we're behind LOCAL=$(git rev-parse HEAD) REMOTE=$(git rev-parse origin/master 2>/dev/null || git rev-parse origin/main) if [ "$LOCAL" != "$REMOTE" ]; then log "Updates available, pulling..." git pull --ff-only # Pull LFS objects for new/changed files log "Pulling LFS objects..." git lfs pull log "Pull complete." else log "Already up to date." fi # Check catalogue hash if [ -f "$CATALOGUE_PATH" ]; then CURRENT_HASH=$(jq -r '.catalogue_hash // empty' "$CATALOGUE_PATH" 2>/dev/null || echo "unknown") echo "$CURRENT_HASH" > "$HASH_FILE" if [ "$PREV_HASH" != "$CURRENT_HASH" ]; then log "Catalogue updated: $PREV_HASH -> $CURRENT_HASH" # Could trigger cache invalidation or notify MCP server here else log "Catalogue unchanged: $CURRENT_HASH" fi else log "Warning: Catalogue not found at $CATALOGUE_PATH" fi log "Sync complete."