-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
100 changed files
with
3,395 additions
and
1,185 deletions.
There are no files selected for viewing
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
This file was deleted.
Oops, something went wrong.
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
name: Detect Unused i18next Strings | ||
|
||
on: | ||
pull_request: | ||
paths: | ||
- "client/src/**" | ||
|
||
jobs: | ||
detect-unused-i18n-keys: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
pull-requests: write # Required for posting PR comments | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Find unused i18next keys | ||
id: find-unused | ||
run: | | ||
echo "🔍 Scanning for unused i18next keys..." | ||
# Define paths | ||
I18N_FILE="client/src/locales/en/translation.json" | ||
SOURCE_DIR="client/src" | ||
# Check if translation file exists | ||
if [[ ! -f "$I18N_FILE" ]]; then | ||
echo "::error title=Missing i18n File::Translation file not found: $I18N_FILE" | ||
exit 1 | ||
fi | ||
# Extract all keys from the JSON file | ||
KEYS=$(jq -r 'keys[]' "$I18N_FILE") | ||
# Track unused keys | ||
UNUSED_KEYS=() | ||
# Check if each key is used in the source code | ||
for KEY in $KEYS; do | ||
if ! grep -r --include=\*.{js,jsx,ts,tsx} -q "$KEY" "$SOURCE_DIR"; then | ||
UNUSED_KEYS+=("$KEY") | ||
fi | ||
done | ||
# Output results | ||
if [[ ${#UNUSED_KEYS[@]} -gt 0 ]]; then | ||
echo "🛑 Found ${#UNUSED_KEYS[@]} unused i18n keys:" | ||
echo "unused_keys=$(echo "${UNUSED_KEYS[@]}" | jq -R -s -c 'split(" ")')" >> $GITHUB_ENV | ||
for KEY in "${UNUSED_KEYS[@]}"; do | ||
echo "::warning title=Unused i18n Key::'$KEY' is defined but not used in the codebase." | ||
done | ||
else | ||
echo "✅ No unused i18n keys detected!" | ||
echo "unused_keys=[]" >> $GITHUB_ENV | ||
fi | ||
- name: Post verified comment on PR | ||
if: env.unused_keys != '[]' | ||
run: | | ||
PR_NUMBER=$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH") | ||
# Format the unused keys list correctly, filtering out empty entries | ||
FILTERED_KEYS=$(echo "$unused_keys" | jq -r '.[]' | grep -v '^\s*$' | sed 's/^/- `/;s/$/`/' ) | ||
COMMENT_BODY=$(cat <<EOF | ||
### 🚨 Unused i18next Keys Detected | ||
The following translation keys are defined in \`translation.json\` but are **not used** in the codebase: | ||
$FILTERED_KEYS | ||
⚠️ **Please remove these unused keys to keep the translation files clean.** | ||
EOF | ||
) | ||
gh api "repos/${{ github.repository }}/issues/${PR_NUMBER}/comments" \ | ||
-f body="$COMMENT_BODY" \ | ||
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Fail workflow if unused keys found | ||
if: env.unused_keys != '[]' | ||
run: exit 1 # This makes the PR fail if unused keys exist |
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
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.