add changes #25
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: Create and Update Translation Branches and PRs | |
# This will run when there is a push to any English language branch | |
# With the format listed below. | |
on: | |
push: | |
branches: | |
- 'handbook_v*_en' | |
jobs: | |
create_and_update_translation_branches: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up Git | |
run: | | |
git config --global user.name 'ntluong95' | |
git config --global user.email '[email protected]' | |
- name: Install GitHub CLI | |
run: | | |
sudo apt update | |
sudo apt install -y gh | |
- name: Create and update language branches and PRs | |
run: | | |
LANGS=("fr" "es" "vn" "jp" "tr" "pt" "ru") | |
EN_BRANCH="${{ github.ref }}" | |
VERSION_SUFFIX="${EN_BRANCH#refs/heads/handbook_}" | |
for lang in "${LANGS[@]}"; do | |
TRANSLATION_BRANCH="handbook_${VERSION_SUFFIX/_en/_$lang}" | |
# Check if the translation branch exists | |
if git ls-remote --exit-code --heads origin "${TRANSLATION_BRANCH}"; then | |
echo "Branch ${TRANSLATION_BRANCH} exists. Checking out and rebasing with ${EN_BRANCH}" | |
git checkout "${TRANSLATION_BRANCH}" | |
git pull origin "${TRANSLATION_BRANCH}" | |
git rebase "origin/${EN_BRANCH#refs/heads/}" | |
else | |
echo "Branch ${TRANSLATION_BRANCH} does not exist. Creating new branch from ${EN_BRANCH}." | |
git checkout -b "${TRANSLATION_BRANCH}" | |
git pull origin "${EN_BRANCH#refs/heads/}" | |
fi | |
# Force push the changes to the remote repository | |
git push origin "${TRANSLATION_BRANCH}" --force | |
# Get the date of the latest commit on the translation branch | |
latest_commit_date=$(git show -s --format=%ci ${TRANSLATION_BRANCH}) | |
commits=$(gh api repos/${{ github.repository }}/commits --paginate --jq ".[] | select(.commit.author.date > \"$latest_commit_date\") | .sha") | |
# commits=$(git log origin/"${EN_BRANCH#refs/heads/}" --since="$latest_commit_date" --pretty=format:"%H") | |
echo "Commits on the English branch that were made after the latest commit on the translation branch: $commits at $latest_commit_date" | |
# Check if there are new commits | |
if [ -z "$commits" ]; then | |
echo "No new commits to include in PR for ${TRANSLATION_BRANCH}" | |
continue | |
fi | |
# Check if a PR already exists for this branch | |
PR_EXISTS=$(gh pr list --head "${TRANSLATION_BRANCH}" --state open --json number --jq length) | |
if [ "$PR_EXISTS" -eq 0 ]; then | |
echo "Creating new PR for ${TRANSLATION_BRANCH}" | |
# PR_URL=$(gh pr create --base main --head "$TRANSLATION_BRANCH" --title "Handbook ${VERSION_SUFFIX/_en/} $lang" --body "Automated pull request for $lang handbook version ${VERSION_SUFFIX/_en/}") | |
PR_URL=$(gh pr create --base "${EN_BRANCH#refs/heads/}" --head "$TRANSLATION_BRANCH" --title "Handbook ${VERSION_SUFFIX/_en/} $lang" --body "Automated pull request for $lang handbook version ${VERSION_SUFFIX/_en/}") | |
PR_NUMBER=$(echo "$PR_URL" | grep -oE '[0-9]+$') | |
else | |
# Get the PR number for the translation branch | |
echo "PR already exists for ${TRANSLATION_BRANCH}" | |
PR_NUMBER=$(gh pr list --head "${TRANSLATION_BRANCH}" --state open --json number --jq ".[0].number") | |
fi | |
echo "Pull Request Number: $PR_NUMBER" | |
# Add new commits as checkboxes to the PR description | |
checkboxes="" | |
for commit in $commits; do | |
checkboxes="$checkboxes\n- [ ] [$commit](https://github.com/${{ github.repository }}/commit/$commit)" | |
done | |
# Mention a user in the PR description | |
if [ "$lang" == "es" ]; then | |
checkboxes="$checkboxes @robcrystalornelas, please review." | |
fi | |
gh api repos/${{ github.repository }}/issues/$PR_NUMBER --method PATCH --field body="$checkboxes" | |
done | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |