#!/bin/bash ENV=$1 REMOTE_HOST="root@infra.mintel.me" REMOTE_DIR="/opt/infra/directus" if [ -z "$ENV" ]; then echo "Usage: ./scripts/cms-apply.sh [local|infra]" exit 1 fi case $ENV in local) CONTAINER=$(docker compose ps -q directus) if [ -z "$CONTAINER" ]; then echo "❌ Local directus container not found." exit 1 fi echo "🚀 Applying schema locally..." docker exec "$CONTAINER" npx directus schema apply /directus/schema/snapshot.yaml --yes ;; infra) PROJECT_NAME="directus" echo "📤 Uploading snapshot to $ENV..." # Ensure remote directory exists ssh "$REMOTE_HOST" "mkdir -p $REMOTE_DIR/directus/schema" scp ./directus/schema/snapshot.yaml "$REMOTE_HOST:$REMOTE_DIR/directus/schema/snapshot.yaml" echo "🔍 Detecting remote container..." REMOTE_CONTAINER=$(ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose -p $PROJECT_NAME ps -q directus") if [ -z "$REMOTE_CONTAINER" ]; then echo "❌ Remote container for $ENV not found." exit 1 fi echo "🚀 Applying schema to $ENV..." ssh "$REMOTE_HOST" "docker exec $REMOTE_CONTAINER npx directus schema apply /directus/schema/snapshot.yaml --yes" echo "🔄 Restarting Directus to clear cache..." ssh "$REMOTE_HOST" "cd $REMOTE_DIR && docker compose -p $PROJECT_NAME restart directus" ;; *) echo "❌ Invalid environment: $ENV. Only 'local' and 'infra' are supported." exit 1 ;; esac echo "✨ Schema apply complete!"