mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2026-01-06 01:39:38 -06:00
114 lines
3.6 KiB
YAML
114 lines
3.6 KiB
YAML
name: Upload Translations to POEditor on PR Merge
|
|
|
|
on:
|
|
pull_request:
|
|
types: [closed]
|
|
branches:
|
|
- develop
|
|
paths:
|
|
- "client/src/locales/**"
|
|
|
|
jobs:
|
|
upload-translations:
|
|
# Only run if the PR was merged (not just closed) or manually triggered
|
|
if: github.event.pull_request.merged == true
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0 # Fetch all history to get changed files
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "22"
|
|
|
|
- name: Create package.json for scripts
|
|
run: |
|
|
mkdir -p .github/scripts
|
|
cat > .github/scripts/package.json << EOF
|
|
{
|
|
"name": "poeditor-scripts",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"dependencies": {
|
|
"axios": "^1.6.0",
|
|
"fs-extra": "^11.1.1",
|
|
"form-data": "^4.0.0"
|
|
}
|
|
}
|
|
EOF
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
cd .github/scripts
|
|
npm install
|
|
|
|
- name: Get changed locale files
|
|
id: changed-files
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
# Get base and head commits
|
|
BASE_SHA=${{ github.event.pull_request.base.sha }}
|
|
HEAD_SHA=${{ github.event.pull_request.head.sha }}
|
|
|
|
echo "Base SHA: $BASE_SHA"
|
|
echo "Head SHA: $HEAD_SHA"
|
|
|
|
# Get list of changed files in client/src/locales directory
|
|
CHANGED_FILES=$(git diff --name-only $BASE_SHA..$HEAD_SHA -- 'client/src/locales/*.json' || git ls-files 'client/src/locales/*.json')
|
|
|
|
if [ -z "$CHANGED_FILES" ]; then
|
|
echo "No changes detected in locale files"
|
|
echo "CHANGED_FILES=" >> $GITHUB_ENV
|
|
else
|
|
echo "Changed files:"
|
|
echo "$CHANGED_FILES"
|
|
echo "CHANGED_FILES<<EOF" >> $GITHUB_ENV
|
|
echo "$CHANGED_FILES" >> $GITHUB_ENV
|
|
echo "EOF" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Upload changed translations to POEditor
|
|
if: env.CHANGED_FILES != ''
|
|
env:
|
|
POEDITOR_API: ${{ secrets.POEDITOR_API }}
|
|
POEDITOR_PROJECT_ID: ${{ secrets.POEDITOR_PROJECT_ID }}
|
|
run: |
|
|
# Process each changed file
|
|
for FILE in $CHANGED_FILES; do
|
|
if [[ -f "$FILE" ]]; then
|
|
# Extract language code from filename (e.g., client/src/locales/en.json -> en)
|
|
FILENAME=$(basename "$FILE")
|
|
|
|
# Special case: map gb.json to en language code
|
|
if [ "$FILENAME" == "gb.json" ]; then
|
|
LANG="en"
|
|
echo "Found gb.json, mapping to language code 'en'"
|
|
else
|
|
LANG=$(basename "$FILE" .json)
|
|
fi
|
|
|
|
echo "Processing $FILE for language $LANG"
|
|
|
|
# Upload to POEditor
|
|
LANGUAGE=$LANG FILE_PATH=$FILE node .github/scripts/upload-translations.js
|
|
fi
|
|
done
|
|
|
|
- name: Notify on success
|
|
if: success() && env.CHANGED_FILES != ''
|
|
run: |
|
|
echo "Successfully uploaded translation files to POEditor."
|
|
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
|
|
echo "Manual trigger comment: ${{ github.event.inputs.comment }}"
|
|
fi
|
|
|
|
- name: Notify on no changes
|
|
if: env.CHANGED_FILES == ''
|
|
run: |
|
|
echo "No translation files were found to upload."
|