Skip to content

Workflow file for this run

# name: Non-English Comments Check
# on:
# pull_request:
# branches:
# - main
# workflow_dispatch:
# jobs:
# non-english-comments-check:
# runs-on: ubuntu-latest
# env:
# # Directories to be excluded
# EXCLUDE_DIRS: ".git docs tests scripts assets node_modules build"
# # Files to be excluded (e.g., markdown, text files)
# EXCLUDE_FILES: "*.md *.txt *.html *.css *.min.js *.mdx"
# steps:
# - uses: actions/checkout@v4
# - name: Search for Non-English comments
# run: |
# set -e
# # Define the regex pattern to match Chinese characters
# pattern='[\p{Han}]'
# # Process the directories to be excluded
# exclude_dirs=""
# for dir in $EXCLUDE_DIRS; do
# exclude_dirs="$exclude_dirs --exclude-dir=$dir"
# done
# # Use grep to find all comments containing Non-English characters
# grep -Pnr "$pattern" . $exclude_dirs | while read -r line ; do
# file_name=$(echo "$line" | cut -d':' -f1)
# # Check if the file matches any pattern in EXCLUDE_FILES
# skip_file=false
# for file_pattern in $EXCLUDE_FILES; do
# # Use echo and grep to match the file name with the pattern
# if echo "$file_name" | grep -q "$file_pattern"; then
# skip_file=true
# break
# fi
# done
# # If the file matches an exclude pattern, skip it
# if [ "$skip_file" = true ]; then
# continue
# fi
# # Write the result to the non_english_comments.txt file
# echo "$line" >> non_english_comments.txt
# done || true
# - name: Output non-English comments if found
# id: check-comments
# run: |
# if [ -s non_english_comments.txt ]; then
# echo "Non-English comments found in the following locations:"
# cat non_english_comments.txt
# comments=$(cat non_english_comments.txt | sed ':a;N;$!ba;s/\n/\\n/g')
# echo "non_english_comments=$comments" >> $GITHUB_ENV
# exit 1 # terminate the workflow
# else
# echo "No Non-English comments found."
# fi
# - name: Comment on PR if errors found
# if: failure() # This step runs only if the previous step fails
# uses: peter-evans/[email protected]
# with:
# token: ${{ secrets.GITHUB_TOKEN }} # GitHub token to post the comment
# issue-number: ${{ github.event.pull_request.number }} # PR number
# edit-mode: replace # This ensures that the comment is updated instead of creating a new one
# body: |
# ⚠️ Non-English comments were found in the following locations:
# ```
# $(while IFS= read -r line; do echo "$line"; done < non_english_comments.txt)
# ```
name: Non-English Comments Check
on:
pull_request:
branches:
- main
workflow_dispatch:
jobs:
non-english-comments-check:
runs-on: ubuntu-latest
env:
# Directories to be excluded
EXCLUDE_DIRS: ".git docs tests scripts assets node_modules build"
# Files to be excluded
EXCLUDE_FILES: "*.md *.txt *.html *.css *.min.js *.mdx"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Ensure the full history is fetched so git diff can work properly
- name: Search for Non-English comments in PR files
run: |
set -e
# Define the regex pattern to match Chinese characters
pattern='[\p{Han}]'
# Get the list of files changed in this PR compared to the base branch
changed_files=$(git diff --name-only ${{ github.event.pull_request.base.sha }})
# Process the directories to be excluded
exclude_dirs=""
for dir in $EXCLUDE_DIRS; do
exclude_dirs="$exclude_dirs --exclude-dir=$dir"
done
# Process the file types to be excluded
exclude_files=""
for file in $EXCLUDE_FILES; do
exclude_files="$exclude_files --exclude=$file"
done
# Initialize the variable for storing the grep output
NON_ENGLISH_COMMENTS=""
# Check only the files modified in this PR for non-English comments
for file in $changed_files; do
# Skip files matching excluded patterns
skip_file=false
for file_pattern in $EXCLUDE_FILES; do
if echo "$file" | grep -q "$file_pattern"; then
skip_file=true
break
fi
done
# If the file matches an exclude pattern, skip it
if [ "$skip_file" = true ]; then
continue
fi
# Use grep to find all comments containing Non-English characters, including file path and line numbers
grep_output=$(grep -PnH "$pattern" "$file" || true)
if [ -n "$grep_output" ]; then
echo "$grep_output" >> non_english_comments.txt # Save to file
NON_ENGLISH_COMMENTS="$NON_ENGLISH_COMMENTS$(echo "$grep_output" | sed 's/$/ /')\n" # Save to variable with Markdown formatting
fi
done
# Store the grep output in an environment variable
echo "NON_ENGLISH_COMMENTS=$NON_ENGLISH_COMMENTS" >> $GITHUB_ENV
- name: Output non-English comments if found
run: |
if [ -s non_english_comments.txt ]; then
echo "Non-English comments found in the following locations:"
cat non_english_comments.txt
exit 1 # terminate the workflow
else
echo "No Non-English comments found."
fi
- name: Comment on PR if errors found
if: failure() # This step runs only if the previous step fails
uses: peter-evans/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }} # GitHub token to post the comment
issue-number: ${{ github.event.pull_request.number }} # PR number
edit-mode: replace # This ensures that the comment is updated instead of creating a new one
body: |
⚠️ Non-English comments were found in the following locations:
```
${{ env.NON_ENGLISH_COMMENTS }}
```