52 lines
2.1 KiB
Plaintext
Executable File
52 lines
2.1 KiB
Plaintext
Executable File
# 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."
|
|
# Push branch AND tag directly inside the hook because Git native push has already recorded the old SHA
|
|
CURRENT_BRANCH=$(git branch --show-current)
|
|
if [ -n "$CURRENT_BRANCH" ]; then
|
|
git push origin "$CURRENT_BRANCH" --no-verify
|
|
fi
|
|
git push origin "$TAG" --force --no-verify
|
|
|
|
echo -e "\n\033[32m✨ VERSIONS SYNCED & PUSHED SUCCESSFULLY ✨\033[0m"
|
|
echo -e "\033[33mThe correct commit has been tagged on origin.\033[0m"
|
|
echo -e "\033[90m(Info: You will see a 'pre-push hook failed' and 'failed to push' error below. Please completely ignore it. We MUST abort the native git push, otherwise Git would push the pre-sync commit to the tag and break the version history.)\033[0m\n"
|
|
|
|
# We MUST exit 1, otherwise native Git will push the wrong commit to the tag
|
|
exit 1
|
|
else
|
|
echo "✨ Versions already in sync for $TAG."
|
|
exit 0
|
|
fi
|
|
fi
|
|
done
|