seitime-frappe/.github/workflows/review-po-prs.yml
2026-03-25 17:01:47 +00:00

80 lines
2.3 KiB
YAML

name: Review translation PRs
on:
pull_request_target:
types: [opened, reopened, synchronize, ready_for_review]
branches:
- develop
paths:
- "**/*.po"
concurrency:
group: po-review-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
review-po-pr:
if: ${{ github.event.pull_request.user.login == 'frappe-pr-bot' }}
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.base.sha }}
fetch-depth: 1
persist-credentials: false
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: "3.14"
- name: Install helper dependencies
run: python -m pip install babel
- name: Build PO review comment
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
run: python .github/helper/po_pr_review.py --output po-pr-review-comment.md
- name: Create or update PR comment
uses: actions/github-script@v8
with:
script: |
const fs = require("fs");
const marker = "<!-- po-translation-review -->";
const body = fs.readFileSync("po-pr-review-comment.md", "utf8");
const { owner, repo } = context.repo;
const issue_number = context.issue.number;
const comments = await github.paginate(github.rest.issues.listComments, {
owner,
repo,
issue_number,
per_page: 100
});
const existingComment = comments.find((comment) => comment.body.includes(marker));
if (existingComment) {
await github.rest.issues.updateComment({
owner,
repo,
comment_id: existingComment.id,
body
});
} else {
await github.rest.issues.createComment({
owner,
repo,
issue_number,
body
});
}