forked from virt-mirrors/Sit
125 lines
No EOL
4.5 KiB
YAML
125 lines
No EOL
4.5 KiB
YAML
name: Crowdin Download Action
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
localization_branch_name:
|
|
description: 'The branch to create for the translations PR.'
|
|
required: true
|
|
default: 'crowdin/translations'
|
|
pull_request_base_branch:
|
|
description: 'The base branch for the pull request.'
|
|
required: true
|
|
default: 'dev'
|
|
|
|
jobs:
|
|
download-translations:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
# Checkout the BASE branch first. The PR branch will be created later.
|
|
- name: Checkout Base Branch
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.inputs.pull_request_base_branch }}
|
|
|
|
- name: Configure Git User
|
|
run: |
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
|
|
- name: Synchronize with Crowdin (Download Only)
|
|
uses: crowdin/github-action@v2
|
|
with:
|
|
upload_sources: false
|
|
upload_translations: false
|
|
download_translations: true
|
|
create_pull_request: false
|
|
localization_branch_name: ${{ github.event.inputs.localization_branch_name }}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
|
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
|
|
rename-files:
|
|
needs: download-translations
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Localization Branch
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.inputs.localization_branch_name }}
|
|
|
|
- name: Configure Git User
|
|
run: |
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
|
|
- name: Rename JSON Files to Lowercase
|
|
env:
|
|
TARGET_DIR: "common/src/main/resources/assets/directionhud/lang/"
|
|
run: |
|
|
echo "Starting renaming process for JSON files within $TARGET_DIR..."
|
|
if [ ! -d "$TARGET_DIR" ]; then
|
|
echo "Warning: Target directory '$TARGET_DIR' does not exist. Skipping rename."
|
|
exit 0
|
|
fi
|
|
find "$TARGET_DIR" -type f -name '*[A-Z]*.json' | while IFS= read -r file; do
|
|
original_path="$file"
|
|
dir_name=$(dirname "$original_path")
|
|
base_name=$(basename "$original_path")
|
|
new_base_name=$(echo "$base_name" | tr '[:upper:]' '[:lower:]')
|
|
new_path="$dir_name/$new_base_name"
|
|
if [ "$original_path" != "$new_path" ]; then
|
|
if [ -e "$new_path" ] && [ ! "$(readlink -f "$original_path")" = "$(readlink -f "$new_path")" ]; then
|
|
echo "::warning file=$original_path::Cannot rename '$original_path' to '$new_path' because it already exists. Skipping."
|
|
else
|
|
git mv "$original_path" "$new_path"
|
|
fi
|
|
fi
|
|
done
|
|
echo "JSON file renaming complete."
|
|
|
|
- name: Commit Renamed Files
|
|
run: |
|
|
echo "Committing renamed files..."
|
|
git add -A
|
|
git commit -m "Rename JSON translation files to lowercase for consistency"
|
|
echo "Renames committed."
|
|
|
|
- name: Push Changes to Localization Branch
|
|
run: |
|
|
echo "Pushing combined changes to ${{ github.event.inputs.localization_branch_name }}..."
|
|
git push origin ${{ github.event.inputs.localization_branch_name }}
|
|
|
|
create-pr:
|
|
needs: [ download-translations, rename-files ]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout branch
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.inputs.localization_branch_name }}
|
|
|
|
- name: Set up Git config
|
|
run: |
|
|
git config user.name "github-actions"
|
|
git config user.email "github-actions@github.com"
|
|
|
|
- name: Install GitHub CLI
|
|
run: sudo apt-get install gh -y
|
|
|
|
- name: Authenticate GitHub CLI
|
|
run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
|
|
|
|
- name: Create Pull Request
|
|
run: |
|
|
gh pr create \
|
|
--title "Update translations from Crowdin" \
|
|
--body "This PR includes:\n- New translations from Crowdin\n- Renamed translation files to lowercase" \
|
|
--head ${{ github.event.inputs.localization_branch_name }} \
|
|
--base ${{ github.event.inputs.pull_request_base_branch }} \
|
|
--label "localization" |