+++ /dev/null
-name: Spell Check with Typos
-on:
- push:
- branches:
- - 'master'
- pull_request:
-
-concurrency:
- group: ${{ github.actor }}-${{ github.ref }}-typos
- cancel-in-progress: true
-
-permissions: write-all
-
-jobs:
- typos-check:
- name: Check for new typos
- runs-on: ubuntu-latest
- timeout-minutes: 5
- steps:
- - name: Checkout the Checkout Actions Repository
- uses: actions/checkout@v4
- with:
- persist-credentials: false
- - name: Check spelling with typos
- env:
- GH_TOKEN: "${{ github.token }}"
- run: |
- mkdir -p "${{ runner.temp }}/typos"
- wget --secure-protocol=TLSv1_3 --max-redirect=1 --retry-on-host-error --retry-connrefused --tries=3 \
- --quiet --output-document=- "https://github.com/crate-ci/typos/releases/download/v1.19.0/typos-v1.19.0-x86_64-unknown-linux-musl.tar.gz" \
- | tar -xz -C "${{ runner.temp }}/typos" ./typos
- "${{ runner.temp }}/typos/typos" --version
-
- "${{ runner.temp }}/typos/typos" --config .typos.toml --format json doc examples include source tests >> ${{ runner.temp }}/typos.jsonl || true
- - name: Update repo with fixable typos
- uses: crate-ci/typos@v1.23.6
- with:
- write_changes: true
- config: ./.typos.toml
- files: doc examples include source tests
- - name: Store typos diff file
- run: git diff > changes-typos.diff
- - name: archive typos results
- uses: actions/upload-artifact@v4
- with:
- name: changes-typos.diff
- path: changes-typos.diff
- - name: Report typos as warnings
- run: |
- python -c '
- import sys, json
- old = set()
- clean = True
- with open(sys.argv[1]) as file:
- for line in file:
- new = json.loads(line)
- if new["type"] == "typo":
- clean = False
- print("::warning file={},line={},col={}::perhaps \"{}\" should be \"{}\".".format(
- new["path"], new["line_num"], new["byte_offset"],
- new["typo"], " or ".join(new["corrections"])))
- sys.exit(1 if not clean else 0)' "${{ runner.temp }}/typos.jsonl"