# Validate Directus SDK imports before push
# This prevents runtime crashes caused by importing non-existent exports
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
if [ -f "$SCRIPT_DIR/scripts/validate-sdk-imports.sh" ]; then
  "$SCRIPT_DIR/scripts/validate-sdk-imports.sh" || exit 1
fi

# Check if we are pushing a tag
while read local_ref local_sha remote_ref remote_sha
do
  if [[ "$remote_ref" == refs/tags/* ]]; then
    TAG=${remote_ref#refs/tags/}
    echo "🏷️ Tag detected: $TAG, ensuring versions are synced..."
    
    # Run sync script
    pnpm sync-versions "$TAG"
    
    # Check for changes in relevant files
    SYNC_FILES="package.json packages/*/package.json apps/*/package.json .env.example"
    CHANGES=$(git status --porcelain $SYNC_FILES)
    
    if [[ -n "$CHANGES" ]]; then
      echo "📝 Version sync made changes. Integrating into tag..."
      
      # Stage and commit
      git add $SYNC_FILES
      git commit -m "chore: sync versions to $TAG" --no-verify
      
      # Force update the local tag to point to the new commit
      git tag -f "$TAG" > /dev/null
      
      echo "✅ Tag $TAG has been updated locally with synced versions."
      echo "🚀 Auto-pushing updated tag..."
      
      # Push the updated tag directly (using --no-verify to avoid recursion)
      git push origin "$TAG" --force --no-verify
      
      echo "✨ All done! Hook integrated the sync and pushed for you."
      exit 1 # Still exit 1 to abort the original (now outdated) push attempt
    else
      echo "✨ Versions already in sync for $TAG."
    fi
  fi
done
