New Crowdin updates #809
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: i18n PR auto-merge | |
on: | |
pull_request: | |
types: [opened, synchronize, reopened, labeled] | |
branches: | |
- main | |
jobs: | |
run-and-merge: | |
if: contains(github.event.pull_request.labels.*.name, 'i18n') && | |
github.event.pull_request.base.ref == 'main' && | |
github.event.pull_request.head.ref == 'l10n_main' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- run: sleep 15 | |
- name: Check if the branch is dirty | |
run: | | |
git fetch origin ${{ github.event.pull_request.head.ref }} | |
if [ $(git rev-parse HEAD) != $(git rev-parse origin/${{ github.event.pull_request.head.ref }}) ]; then | |
echo "Branch is dirty. Exiting..." | |
exit 0 | |
fi | |
- name: Check auto-merge conditions | |
run: | | |
BASE_SHA="${{ github.event.pull_request.base.sha }}" | |
HEAD_SHA="${{ github.event.pull_request.head.sha }}" | |
# Debug: Show the base and head SHA | |
echo "Base SHA: $BASE_SHA" | |
echo "Head SHA: $HEAD_SHA" | |
# Check if the commits exist | |
if ! git cat-file -e $BASE_SHA || ! git cat-file -e $HEAD_SHA; then | |
echo "ERROR: One or both of the commits are not available." | |
exit 1 | |
fi | |
# Calculate the total number of lines changed (added, removed, or modified) | |
LINES_CHANGED=$(git diff --shortstat $BASE_SHA $HEAD_SHA | awk '{print $4 + $6 + $8}') | |
if [ -z "$LINES_CHANGED" ]; then | |
LINES_CHANGED=0 | |
fi | |
echo "Total lines changed: $LINES_CHANGED" | |
# Check if the number of lines changed is more than 50 | |
if [ "$LINES_CHANGED" -le 50 ]; then | |
exit 0 | |
else | |
echo "More than 50 lines have been changed. Merging pull request." | |
# List of locales changed | |
LOCALES_CHANGED=$(git diff --name-only $BASE_SHA $HEAD_SHA | grep '\.po$' | awk -F '/' '{print $NF}' | sed 's/\.po$//' | tr '\n' ',' | sed 's/,$//') | |
# Better subject | |
# "i18n updates ([LOCALES_CHANGED])" | |
PR_NUMBER=$(echo ${{ github.event.pull_request.number }}) | |
SUBJECT="i18n updates ($LOCALES_CHANGED) (#$PR_NUMBER)" | |
gh pr merge $PR_NUMBER --squash --subject "$SUBJECT" || true | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |