Skip to content

fix: Change check reinstall logic #163

fix: Change check reinstall logic

fix: Change check reinstall logic #163

Workflow file for this run

name: Non-English Comments Check
on:
pull_request_target:
types: [opened, synchronize, reopened]
branches:
- main
workflow_dispatch:
jobs:
non-english-comments-check:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
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:
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
fetch-depth: 0
- name: Search for Non-English comments in the entire repository
run: |
set -e
# Define the regex pattern to match Chinese characters
pattern='[\p{Han}]'
# Use find to get all files in the repository
all_files=$(find . -type f)
# Loop over each file in the repository
for file in $all_files; do
# Skip files in excluded directories
skip_file=false
for dir in ${EXCLUDE_DIRS}; do
if [[ "$file" == ./$dir/* ]]; then
skip_file=true
break
fi
done
# Skip files matching excluded patterns
for file_pattern in ${EXCLUDE_FILES}; do
if [[ "$file" == *$file_pattern ]]; then
skip_file=true
break
fi
done
# If the file matches any exclude pattern, skip it
if [ "$skip_file" = true ]; then
continue
fi
# Use grep to find all comments containing Non-English characters in filtered files
grep_output=$(grep -PnH "$pattern" "$file" || true)
if [ -n "$grep_output" ]; then
# Insert a tab after the line number, keeping the colon between the file path and line number
formatted_output=$(echo "$grep_output" | sed 's/^\(.*:[0-9]\+\):/\1\t/')
echo "$formatted_output" >> non_english_comments.txt # Save to file
fi
done
# - name: Search for Non-English comments in PR diff 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 }} ${{ github.event.pull_request.head.sha }})
# # Loop over each changed file
# for file in $changed_files; do
# # Skip files in excluded directories
# skip_file=false
# for dir in ${EXCLUDE_DIRS}; do
# if [[ "$file" == ./$dir/* ]]; then
# skip_file=true
# break
# fi
# done
# # Skip files matching excluded patterns
# for file_pattern in ${EXCLUDE_FILES}; do
# if [[ "$file" == *$file_pattern ]]; then
# skip_file=true
# break
# fi
# done
# # If the file matches any exclude pattern, skip it
# if [ "$skip_file" = true ]; then
# continue
# fi
# # Use grep to find all comments containing Non-English characters in filtered files
# grep_output=$(grep -PnH "$pattern" "$file" || true)
# if [ -n "$grep_output" ]; then
# # Insert a tab after the line number, keeping the colon between the file path and line number
# formatted_output=$(echo "$grep_output" | sed 's/^\(.*:[0-9]\+\):/\1\t/')
# echo "$formatted_output" >> non_english_comments.txt # Save to file
# fi
# done
- name: Store non-English comments in ENV
run: |
# Store the entire content of non_english_comments.txt into an environment variable
if [ -f non_english_comments.txt ]; then
NON_ENGLISH_COMMENTS=$(cat non_english_comments.txt)
echo "NON_ENGLISH_COMMENTS<<EOF" >> $GITHUB_ENV
echo "$NON_ENGLISH_COMMENTS" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
fi
- 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: Find Comment
if: failure() && github.event_name != 'workflow_dispatch'
uses: peter-evans/[email protected]
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'OpenIM-Robot'
body-includes: Non-English comments were found in the following locations
- name: Comment on PR if errors found
if: failure() && github.event_name != 'workflow_dispatch' # 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
token: ${{ secrets.BOT_TOKEN }}
issue-number: ${{ github.event.pull_request.number }} # PR number
comment-id: ${{ steps.fc.outputs.comment-id }}
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 }}
```