ralpha-assets/scripts/droplet-sync.sh

66 lines
1.6 KiB
Bash

#!/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."