delete the added acknowledgement #33
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: Fetch all branches | |
run: git fetch --all | |
- 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 fetch --prune | |
git checkout "${TRANSLATION_BRANCH}" | |
echo "${EN_BRANCH#refs/heads/}" | |
echo "${TRANSLATION_BRANCH}" | |
git status | |
git pull -s recursive -X theirs --no-rebase --no-edit origin "${EN_BRANCH#refs/heads/}" --allow-unrelated-histories | |
git push origin "${TRANSLATION_BRANCH}" | |
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 english branch | |
latest_commit_date=$(git show -s --format=%ci ${EN_BRANCH}) | |
echo "Commits on the English branch that were made after the latest commit on the translation branch at $latest_commit_date" | |
latest_commit_en_branch=$(git show --format=%H -s ${EN_BRANCH}) | |
latest_commit_info=$(git log ${EN_BRANCH} --since="$latest_commit_date" --format="%H %s" --reverse) | |
commit_messages=$(echo "$latest_commit_info" | cut -d' ' -f2-) | |
latest_commit_master=$(git show --format=%H -s origin/master) | |
echo $latest_commit_en_branch | |
echo $latest_commit_master | |
echo $latest_commit_info | |
# Check if there are new commits | |
if [ "$latest_commit_en_branch" == "$latest_commit_master" ]; 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 master --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 $latest_commit_en_branch; do | |
checkboxes="$checkboxes- [ ] [$commit_messages](https://github.com/${{ github.repository }}/commit/$commit)" | |
done | |
# Mention a user in the PR description | |
if [ "$lang" = "vn" ]; then | |
checkboxes="$checkboxes @ntluong95, please check the box when you finish" | |
elif [ "$lang" = "fr" ]; then | |
checkboxes="$checkboxes @nsbatra, please check the box when you finish" | |
elif [ "$lang" = "es" ]; then | |
checkboxes="$checkboxes @robcrystalornelas, please check the box when you finish" | |
elif [ "$lang" = "jp" ]; then | |
checkboxes="$checkboxes @ntluong95, please check the box when you finish" | |
elif [ "$lang" = "tr" ]; then | |
checkboxes="$checkboxes @ntluong95, please check the box when you finish" | |
elif [ "$lang" = "pt" ]; then | |
checkboxes="$checkboxes @ntluong95, please check the box when you finish" | |
elif [ "$lang" = "ru" ]; then | |
checkboxes="$checkboxes @ntluong95, please check the box when you finish" | |
fi | |
# Retrieve the current PR description | |
current_pr_body=$(gh pr view $PR_NUMBER --json body --jq '.body') | |
# Append checkboxes to the current PR description | |
new_pr_body=$(printf "%s\n%s" "$current_pr_body" "$checkboxes") | |
# gh api repos/${{ github.repository }}/issues/$PR_NUMBER --method PATCH --field body="$checkboxes" | |
gh api repos/${{ github.repository }}/issues/$PR_NUMBER --method PATCH --field body="$new_pr_body" | |
done | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |