# Check if we are pushing a tag while read local_ref local_sha remote_ref remote_sha do if [[ "$remote_ref" == refs/tags/v* ]]; 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 [skip ci]" --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 "🚀 Please run your push command again." exit 1 # Abort push to let user re-push the corrected tag else echo "✨ Versions already in sync for $TAG." fi fi done