Run crate-ci/typos
in CI
#84
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 | |
permissions: {} | |
on: [pull_request] | |
jobs: | |
typos-check: | |
name: (add false positives to typos.toml) | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
steps: | |
- name: Checkout the JuliaLang/julia repository | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Check spelling with typos | |
#uses: crate-ci/typos@master | |
env: | |
GH_TOKEN: "${{ github.token }}" | |
run: | | |
git fetch --depth=1 origin ${{ github.base_ref }} | |
OLD_FILES=$(git diff-index --name-only --diff-filter=ad FETCH_HEAD) | |
NEW_FILES=$(git diff-index --name-only --diff-filter=d FETCH_HEAD) | |
mkdir -p "${{ runner.temp }}/typos" | |
RELEASE_ASSET_URL="$( | |
gh api /repos/crate-ci/typos/releases/latest \ | |
--jq '."assets"[] | select(."name" | test("^typos-.+-x86_64-unknown-linux-musl\\.tar\\.gz$")) | ."browser_download_url"' | |
)" | |
wget --secure-protocol=TLSv1_3 --max-redirect=1 --retry-on-host-error --retry-connrefused --tries=3 \ | |
--quiet --output-document=- "${RELEASE_ASSET_URL}" \ | |
| tar -xz -C "${{ runner.temp }}/typos" ./typos | |
"${{ runner.temp }}/typos/typos" --version | |
NEW_TYPOS=$(echo -n $NEW_FILES | xargs "${{ runner.temp }}/typos/typos" --format json) || true | |
git checkout FETCH_HEAD -- $OLD_FILES | |
OLD_TYPOS=$(echo -n $OLD_FILES | xargs "${{ runner.temp }}/typos/typos" --format json) || true | |
python -c ' | |
import sys, json | |
existing = set(typo["typo"] for typo in json.loads("["+sys.argv[1].replace("\n", ",")+"]")) | |
clean = True | |
for new in json.loads("["+sys.argv[2].replace("\n", ",")+"]"): | |
if new["typo"] not in existing: | |
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)' "$OLD_TYPOS" "$NEW_TYPOS" |