88 lines
3.5 KiB
YAML
88 lines
3.5 KiB
YAML
# Do not edit this file directly
|
|
# This file is synced by https://github.com/ChaoticTrials/ModMeta
|
|
|
|
# This workflow was generated with the help of OpenAI's GPT.
|
|
|
|
name: Check Localization Files
|
|
on:
|
|
pull_request_target:
|
|
paths:
|
|
- 'src/main/resources/assets/**/lang/*.json'
|
|
|
|
permissions:
|
|
pull-requests: write
|
|
contents: read
|
|
|
|
jobs:
|
|
check-localization:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
|
fetch-depth: 0
|
|
|
|
- name: Debug PR context
|
|
run: |
|
|
echo "Pull request number: ${{ github.event.pull_request.number }}"
|
|
echo "Repository full name: ${{ github.repository }}"
|
|
echo "Event path: $GITHUB_EVENT_PATH"
|
|
|
|
- name: Check localization files
|
|
run: |
|
|
PR_NUMBER="${{ github.event.pull_request.number }}"
|
|
REPO_FULL_NAME="${{ github.repository }}"
|
|
# Ensure GitHub CLI is authenticated and correctly identifies the PR context
|
|
echo "Processing PR #$PR_NUMBER for repository $REPO_FULL_NAME"
|
|
|
|
# Get the list of added or modified localization files
|
|
FILES=$(gh pr diff "$PR_NUMBER" --repo "$REPO_FULL_NAME" --name-only | grep -E 'src/main/resources/assets/.*/lang/.*\.json' || true)
|
|
|
|
if [[ -z "$FILES" ]]; then
|
|
echo "No localization files have been modified."
|
|
exit 0
|
|
fi
|
|
|
|
# Initialize an array to store the missing keys
|
|
MISSING_KEYS=()
|
|
# Iterate over each file
|
|
for FILE in $FILES; do
|
|
# Check if the file is not the default English translation
|
|
if [[ $FILE != *"en_us.json" ]]; then
|
|
# Get the modid and language key from the file path
|
|
MODID=$(echo $FILE | cut -d'/' -f5)
|
|
LANGUAGE_KEY=$(echo $FILE | cut -d'/' -f7 | cut -d'.' -f1)
|
|
# Check if all keys from the default English translation are included in this file
|
|
KEYS=$(jq -n --argfile en src/main/resources/assets/$MODID/lang/en_us.json --argfile current $FILE '($en | keys) - ($current | keys)' )
|
|
if [[ $KEYS != "[]" ]]; then
|
|
MISSING_KEYS+=("$LANGUAGE_KEY: $KEYS")
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Post a comment on the pull request with the missing keys or a success message
|
|
if [[ ${#MISSING_KEYS[@]} -gt 0 ]]; then
|
|
echo "# 🚨 Missing translation keys 🚨" > review.md
|
|
for MISSING_KEY in "${MISSING_KEYS[@]}"; do
|
|
LANGUAGE=$(echo $MISSING_KEY | cut -d':' -f1)
|
|
KEYS=$(echo $MISSING_KEY | cut -d':' -f2 | jq -r '.[]')
|
|
echo "## **$LANGUAGE**" >> review.md
|
|
for KEY in $KEYS; do
|
|
echo "- $KEY" >> review.md
|
|
done
|
|
echo "" >> review.md
|
|
done
|
|
|
|
# Request changes on the pull request
|
|
gh pr review "$PR_NUMBER" --repo "$REPO_FULL_NAME" --request-changes --body-file review.md
|
|
else
|
|
echo "## ✅ All localization files have been checked and are complete! ✅" > review.md
|
|
echo "Waiting for approval by @MelanX" >> review.md
|
|
|
|
# Approve the pull request
|
|
gh pr review "$PR_NUMBER" --repo "$REPO_FULL_NAME" --comment --body-file review.md
|
|
fi
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|