V1 for Automation Website translations Issues Generation Ref: Issue 325 #17
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
# Contribution by Cloud Native Guatemala folks :) | |
# This workflow will check if a localized content is outdated or not | |
# by comparing English content in the old branch and the latest branch. | |
--- | |
name: Check outdated content | |
on: | |
pull_request: | |
jobs: | |
check-outdated-content: | |
name: Check outdated content | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # fetch all history for all tags and branches | |
- name: Detecting pending translations | |
shell: bash | |
run: | | |
##### DEBUG section, this will be removed later ########### | |
ls -al | |
git status | |
git branch | |
# Default environment variables | |
echo "GITHUB_REF: $GITHUB_REF" | |
echo "Extract branch: ${GITHUB_REF#refs/}" | |
# `github` context information | |
echo "(DEBUG) github.ref: ${{github.ref}}" | |
echo "(DEBUG) github.head_ref: ${{github.head_ref}}" | |
echo "(DEBUG) github.base_ref: ${{github.base_ref}}" | |
##################################################### | |
OUTPUT_DIR="./outdated" | |
CONTENT_DIR="website/content" | |
languages=("es" "zh") | |
base_lang="en" | |
cd $CONTENT_DIR | |
echo "(DEBUG) Current folder: "$(pwd) | |
for lang in ${languages[@]}; do | |
touch $lang.txt | |
done | |
touch $base_lang.txt | |
# Make an output directory | |
if [[ ! -e $OUTPUT_DIR ]]; then | |
mkdir $OUTPUT_DIR | |
elif [[ ! -d $OUTPUT_DIR ]]; then | |
echo "$OUTPUT_DIR already exists but is not a directory" 1>&2 | |
fi | |
LATEST_BRANCH=${GITHUB_REF#refs/} | |
echo "(DEBUG) LATEST_BRANCH: ${LATEST_BRANCH}" | |
# Get the old branch from 'github.base_ref' | |
# The old branch can be 'upstream/dev-ko' | |
OLD_BRANCH="origin/${{github.base_ref}}" | |
echo "(DEBUG) OLD_BRANCH: ${OLD_BRANCH}" | |
compare () { | |
FILE_PATH=$1 | |
# Actually compare between the old and latest English content and log diff in the file | |
if [[ -f "${FILE_PATH}" ]]; then | |
# File exists | |
# Check changes | |
git diff ${OLD_BRANCH}..${LATEST_BRANCH} -- ${FILE_PATH} > temp.diff | |
if [[ -s "temp.diff" ]]; then | |
echo "(DEBUG) ${FILE_PATH} is outdated." | |
mkdir -p ${OUTPUT_DIR}/${FILE_PATH%/*} | |
mv temp.diff ${OUTPUT_DIR}/${FILE_PATH} | |
else | |
echo "check if ${FILE_PATH} exist in other languages" | |
for lang in ${languages[@]}; do | |
NEW_FILE_PATH=$(echo "${FILE_PATH}" | sed -e "s/${base_lang}\//${lang}\//g") | |
if [[ ! -e "${NEW_FILE_PATH}" ]]; then | |
echo "The file ${FILE_PATH} needs to be translated to $lang" | |
echo ${NEW_FILE_PATH} >> $lang.txt | |
fi | |
done | |
fi | |
else | |
echo "(DEBUG) ${FILE_PATH} does not exist." | |
fi | |
} | |
find $base_lang -iname "*.md" > files.txt | |
sort files.txt > files_temp.txt;mv files_temp.txt files.txt | |
INFILE=files.txt | |
while IFS= read -r line | |
do | |
compare "$line" | |
done < "$INFILE" | |
find outdated -iname "*.md" | sed -e "s/outdated/website\/content/g" > $base_lang.txt | |
- name: Generate content for translation issues | |
id: to_translate | |
shell: bash | |
run: | | |
CONTENT_DIR="website/content" | |
cd $CONTENT_DIR | |
echo "(DEBUG) Current folder: "$(pwd) | |
languages=("es" "zh") | |
for lang in ${languages[@]}; do | |
FILES="" | |
echo "---" > $lang"_files.md" | |
echo "title: Pending pages to translate into $lang" >> $lang"_files.md" | |
echo "assignees: sergioarmgpl" >> $lang"_files.md" | |
echo 'labels:' >> $lang"_files.md" | |
echo ' - help wanted' >> $lang"_files.md" | |
echo ' - translations' >> $lang"_files.md" | |
echo ' - good first issue' >> $lang"_files.md" | |
echo ' - issue/tracking' >> $lang"_files.md" | |
echo "---" >> $lang"_files.md" | |
echo "Last change by: {{ payload.sender.login }}." >> $lang"_files.md" | |
echo -e "*Docs to translate for "$lang" language* <br />\n" >> $lang"_files.md" | |
while IFS= read -r line | |
do | |
FILES+="- $line <br />\n" | |
done < "$lang.txt" | |
echo -e $FILES >> $lang"_files.md" | |
done | |
- name: Print files to translate per language | |
shell: bash | |
run: | | |
CONTENT_DIR="website/content" | |
echo "(DEBUG) Current folder "$(pwd) | |
echo "(DEBUG) ES files" | |
echo -e $(cat $CONTENT_DIR/es_files.md) | |
echo "(DEBUG) ZH files" | |
echo -e $(cat $CONTENT_DIR/zh_files.md) | |
- uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
update_existing: true | |
filename: website/content/es_files.md | |
- uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
update_existing: true | |
filename: website/content/zh_files.md | |