Protocol Design 🚀 #245
Workflow file for this run
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
name: 🥢 Spell check | |
on: | |
pull_request: | |
branches: | |
- main | |
jobs: | |
typo_check: | |
name: 🥢 Spell check | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
pull-requests: write | |
env: | |
TYPOS: "" | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
fetch-depth: 2 | |
- name: Install aspell | |
run: sudo apt-get update && sudo apt-get install -y aspell | |
- name: Find and check typos in Markdown files | |
id: find_typos | |
run: | | |
echo "Checking for typos..." | |
# https://unix.stackexchange.com/a/9500 | |
IFS=$'\n' | |
set -f | |
for file in $(find . -name "*.md" ); do | |
output="$(aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case list <$file)" | |
echo "$output" | |
# Exit if aspell has errors | |
if [ $? -ne 0 ]; then | |
exit 1 | |
fi | |
if [[ -n "$output" ]]; then | |
# Format output. | |
output=$(echo "$output" | sed 's/^/ 1. /') | |
TYPOS+="- 📄 $file:" | |
TYPOS+=$'\n' | |
TYPOS+="$output" | |
TYPOS+=$'\n' | |
fi | |
done | |
{ | |
echo 'TYPOS<<EOF' | |
echo "$TYPOS" | |
echo EOF | |
} >> "$GITHUB_ENV" | |
- name: Comment on pull request | |
if: env.TYPOS != '' | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const author = '${{github.event.pull_request.user.login}}'; | |
const typos = `${{ env.TYPOS }}`; | |
const body = ` | |
Hi @${author}, | |
Following typos were found in the pull request: | |
${typos} | |
## ℹ️ Here's how to fix them: | |
- **Fix typos:** Open the relevant files and fix any identified typos. | |
- **Update wordlist:** If a flagged word is actually a project-specific term add it to \`wordlist.txt\` in the project root. | |
Each word should be listed on a separate line. [Learn more.](http://aspell.net/man-html/Format-of-the-Personal-and-Replacement-Dictionaries.html) | |
- **🚧 Remember:** | |
- When adding new words it MUST NOT have any spaces or special characters within or around it. | |
- \`wordlist\` is NOT case sensitive. | |
- Use backticks to quote code variables so as to not bloat the \`wordlist\`. | |
`; | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: body | |
}); | |
core.setFailed('🥢 Spell check: Typos found in docs. Please fix them.'); |