66 lines
1.6 KiB
Bash
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."
|