mirror of
https://github.com/qosmio/nss-packages.git
synced 2025-12-16 16:21:53 +00:00
workflow: auto close non-english issues
This commit is contained in:
parent
e7e8de35f1
commit
326a597d7f
94
.github/workflows/auto-close-non-english-issues.yml
vendored
Normal file
94
.github/workflows/auto-close-non-english-issues.yml
vendored
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
name: Auto Close Non-English Issues
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- edited
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
detect-language:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '22'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install franc-min
|
||||||
|
|
||||||
|
- name: Detect language and close if not English
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |-
|
||||||
|
# Create a script to detect language that NEVER exits with non-zero
|
||||||
|
echo "const franc = require('franc-min').franc || require('franc-min');
|
||||||
|
|
||||||
|
const text = process.argv[2] || '';
|
||||||
|
|
||||||
|
try {
|
||||||
|
const lang = franc(text, { minLength: 10 });
|
||||||
|
if (lang !== 'eng') {
|
||||||
|
console.log(\`Text: \${text}\`);
|
||||||
|
console.log(\`Language detected: \${lang}. This is not English.\`);
|
||||||
|
console.log('NON_ENGLISH');
|
||||||
|
} else {
|
||||||
|
console.log('Language detected: English.');
|
||||||
|
console.log('ENGLISH');
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error detecting language:', error.message);
|
||||||
|
console.log('ERROR');
|
||||||
|
}" > detect.js
|
||||||
|
|
||||||
|
|
||||||
|
# Parse issue title, body, and number
|
||||||
|
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
|
||||||
|
ISSUE_BODY=$(jq -r '.issue.body' "$GITHUB_EVENT_PATH")
|
||||||
|
ISSUE_NUMBER=${{ github.event.issue.number }}
|
||||||
|
|
||||||
|
|
||||||
|
# Debug title, body, and number
|
||||||
|
echo "Debug: ISSUE_TITLE='$ISSUE_TITLE'"
|
||||||
|
echo "Debug: ISSUE_BODY='$ISSUE_BODY'"
|
||||||
|
echo "Debug: ISSUE_NUMBER='$ISSUE_NUMBER'"
|
||||||
|
|
||||||
|
|
||||||
|
# Function to check language and close issue if needed
|
||||||
|
check_and_close() {
|
||||||
|
local text="$1"
|
||||||
|
local field_name="$2"
|
||||||
|
|
||||||
|
if [ -n "$text" ] && [ "$text" != "null" ]; then
|
||||||
|
echo "Checking $field_name..."
|
||||||
|
|
||||||
|
|
||||||
|
# Run detection and capture the output
|
||||||
|
result=$(node detect.js "$text" | tail -1)
|
||||||
|
|
||||||
|
if [ "$result" = "NON_ENGLISH" ]; then
|
||||||
|
echo "$field_name is not in English. Closing issue..."
|
||||||
|
gh issue comment "$ISSUE_NUMBER" --body "Sorry, please open issues in English only. The $field_name was detected as non-English. This issue will be closed automatically."
|
||||||
|
gh issue close "$ISSUE_NUMBER"
|
||||||
|
echo "Issue closed successfully due to non-English content."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$field_name is empty or null, skipping..."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Check title first
|
||||||
|
check_and_close "$ISSUE_TITLE" "title"
|
||||||
|
|
||||||
|
|
||||||
|
# Check body second
|
||||||
|
check_and_close "$ISSUE_BODY" "body"
|
||||||
|
|
||||||
|
echo "Workflow completed successfully."
|
||||||
Loading…
Reference in New Issue
Block a user