ci: add `check-spelling` action (#10470)
Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>master
parent
46e63340ee
commit
841f3cb0bb
8 changed files with 4745 additions and 0 deletions
@ -0,0 +1,15 @@ |
|||||||
|
# check-spelling/check-spelling configuration |
||||||
|
|
||||||
|
File | Purpose | Format | Info |
||||||
|
-|-|-|- |
||||||
|
[dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary) |
||||||
|
[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow) |
||||||
|
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject) |
||||||
|
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes) |
||||||
|
[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only) |
||||||
|
[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns) |
||||||
|
[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect) |
||||||
|
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice) |
||||||
|
|
||||||
|
Note: you can replace any of these files with a directory by the same name (minus the suffix) |
||||||
|
and then include multiple files inside that directory (with that suffix) to merge multiple files together. |
||||||
@ -0,0 +1,25 @@ |
|||||||
|
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 --> |
||||||
|
<details><summary>If the flagged items do not appear to be text</summary> |
||||||
|
|
||||||
|
If items relate to a ... |
||||||
|
* well-formed pattern. |
||||||
|
|
||||||
|
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it, |
||||||
|
try adding it to the `patterns.txt` file. |
||||||
|
|
||||||
|
Patterns are Perl 5 Regular Expressions - you can [test]( |
||||||
|
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines. |
||||||
|
|
||||||
|
Note that patterns can't match multiline strings. |
||||||
|
|
||||||
|
* binary file. |
||||||
|
|
||||||
|
Please add a file path to the `excludes.txt` file matching the containing file. |
||||||
|
|
||||||
|
File paths are Perl 5 Regular Expressions - you can [test]( |
||||||
|
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files. |
||||||
|
|
||||||
|
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md]( |
||||||
|
../tree/HEAD/README.md) (on whichever branch you're using). |
||||||
|
|
||||||
|
</details> |
||||||
@ -0,0 +1,41 @@ |
|||||||
|
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes |
||||||
|
(?:^|/)(?i)COPYRIGHT |
||||||
|
(?:^|/)(?i)LICEN[CS]E |
||||||
|
(?:^|/)package(?:-lock|)\.json$ |
||||||
|
(?:^|/)vendor/ |
||||||
|
ignore$ |
||||||
|
\.avi$ |
||||||
|
\.ico$ |
||||||
|
\.jpe?g$ |
||||||
|
\.lock$ |
||||||
|
\.map$ |
||||||
|
\.min\.. |
||||||
|
\.mod$ |
||||||
|
\.mp[34]$ |
||||||
|
\.png$ |
||||||
|
\.wav$ |
||||||
|
^\.github/ |
||||||
|
^\Qplugins/archlinux/archlinux.plugin.zsh\E$ |
||||||
|
^\Qplugins/cp/cp.plugin.zsh\E$ |
||||||
|
^\Qplugins/extract/_extract\E$ |
||||||
|
^\Qplugins/genpass/genpass.plugin.zsh\E$ |
||||||
|
^\Qplugins/gitignore/gitignore.plugin.zsh\E$ |
||||||
|
^\Qplugins/gnu-utils/gnu-utils.plugin.zsh\E$ |
||||||
|
^\Qplugins/hitchhiker/fortunes/hitchhiker\E$ |
||||||
|
^\Qplugins/jhbuild/jhbuild.plugin.zsh\E$ |
||||||
|
^\Qplugins/jhbuild/README.md\E$ |
||||||
|
^\Qplugins/jruby/jruby.plugin.zsh\E$ |
||||||
|
^\Qplugins/kubectl/kubectl.plugin.zsh\E$ |
||||||
|
^\Qplugins/lol/lol.plugin.zsh\E$ |
||||||
|
^\Qplugins/mosh/mosh.plugin.zsh\E$ |
||||||
|
^\Qplugins/npx/npx.plugin.zsh\E$ |
||||||
|
^\Qplugins/powder/_powder\E$ |
||||||
|
^\Qplugins/suse/suse.plugin.zsh\E$ |
||||||
|
^\Qplugins/thor/_thor\E$ |
||||||
|
^\Qplugins/universalarchive/_universalarchive\E$ |
||||||
|
^\Qplugins/vagrant/vagrant.plugin.zsh\E$ |
||||||
|
^\Qplugins/wp-cli/README.md\E$ |
||||||
|
^\Qplugins/wp-cli/wp-cli.plugin.zsh\E$ |
||||||
|
^\Qthemes/clean.zsh-theme\E$ |
||||||
|
^\Qthemes/philips.zsh-theme\E$ |
||||||
|
^\Qthemes/tonotdo.zsh-theme\E$ |
||||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,73 @@ |
|||||||
|
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns |
||||||
|
|
||||||
|
# YouTube |
||||||
|
https?://(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_]* |
||||||
|
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"] |
||||||
|
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]* |
||||||
|
# Google Analytics |
||||||
|
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]* |
||||||
|
# Google APIs |
||||||
|
\bgoogleapis\.com/[a-z]+/v\d+/[a-z]+/[@./?=\w]+ |
||||||
|
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|) |
||||||
|
# Google Calendar |
||||||
|
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+ |
||||||
|
\w+\@group\.calendar\.google\.com\b |
||||||
|
# Google DataStudio |
||||||
|
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|) |
||||||
|
# The leading `/` here is as opposed to the `\b` above |
||||||
|
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes |
||||||
|
# Google Docs |
||||||
|
/docs\.google\.com/[a-z]+/d/(?:e/|)[0-9a-zA-Z_-]+/? |
||||||
|
# Google Drive |
||||||
|
\bdrive\.google\.com/file/d/[0-9a-zA-Z_?=]* |
||||||
|
# Google Groups |
||||||
|
\bgroups\.google\.com/(?:forum/#!|d/)(?:msg|topic)/[^/]+/[a-zA-Z0-9]+(?:/[a-zA-Z0-9]+|) |
||||||
|
# Google themes |
||||||
|
themes\.googleusercontent\.com/static/fonts/[^/]+/v\d+/[^.]+. |
||||||
|
# Google CDN |
||||||
|
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]* |
||||||
|
# Goo.gl |
||||||
|
/goo\.gl/[a-zA-Z0-9]+ |
||||||
|
# Google Chrome Store |
||||||
|
\bchrome\.google\.com/webstore/detail/\w*(?:/\w*|) |
||||||
|
# Google Books |
||||||
|
\bbooks\.google\.(?:\w{2,4})/books\?[-\w\d=&#.]* |
||||||
|
# Google Fonts |
||||||
|
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]* |
||||||
|
|
||||||
|
# GitHub SHAs |
||||||
|
\bapi.github\.com/repos/[^/]+/[^/]+/[^/]+/[0-9a-f]+\b |
||||||
|
(?:\[[0-9a-f]+\]\(https:/|)/(?:www\.|)github\.com/[^/]+/[^/]+(?:/[^/]+/[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|) |
||||||
|
\bgithub\.com/[^/]+/[^/]+[@#][0-9a-f]+\b |
||||||
|
# githubusercontent |
||||||
|
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]* |
||||||
|
# gist github |
||||||
|
/gist\.github\.com/[^/]+/[0-9a-f]+ |
||||||
|
# git.io |
||||||
|
\bgit\.io/[0-9a-zA-Z]+ |
||||||
|
# GitHub JSON |
||||||
|
"node_id": "[-a-zA-Z=;:/0-9+]*" |
||||||
|
# Contributor |
||||||
|
\[[^\]]+]\(https://github\.com/[^/]+\) |
||||||
|
# GHSA |
||||||
|
GHSA(?:-[0-9a-z]{4}){3} |
||||||
|
|
||||||
|
LS_COLORS=(["']).*?\g{-1} |
||||||
|
|
||||||
|
(\\?)%[a-zA-Z]+\g{-1}(?!%) |
||||||
|
|
||||||
|
# URL escaped characters |
||||||
|
\%[0-9A-F]{2} |
||||||
|
# hex digits including css/html color classes: |
||||||
|
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9a-fA-FgGrR_]{2,}(?:[uU]?[lL]{0,2}|u\d+)\b |
||||||
|
|
||||||
|
# https://www.gnu.org/software/groff/manual/groff.html |
||||||
|
# man troff content |
||||||
|
\\f[BCIPR] |
||||||
|
|
||||||
|
# Compiler flags |
||||||
|
[\t "'`=]-[LPWXY] |
||||||
|
[\t "'`=]-D(?!ebian) |
||||||
|
|
||||||
|
# ignore long runs of a single character: |
||||||
|
\b([A-Za-z])\g{-1}{3,}\b |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
^attache$ |
||||||
|
benefitting |
||||||
|
occurence |
||||||
|
Sorce |
||||||
|
^[Ss]pae |
||||||
|
^untill |
||||||
|
^wether |
||||||
@ -0,0 +1,95 @@ |
|||||||
|
name: Spell checking |
||||||
|
on: |
||||||
|
push: |
||||||
|
branches: ["**"] |
||||||
|
tags-ignore: ["**"] |
||||||
|
pull_request_target: |
||||||
|
issue_comment: |
||||||
|
types: [created] |
||||||
|
|
||||||
|
jobs: |
||||||
|
spelling: |
||||||
|
name: Spell checking |
||||||
|
permissions: |
||||||
|
contents: read |
||||||
|
pull-requests: read |
||||||
|
outputs: |
||||||
|
internal_state_directory: ${{ steps.spelling.outputs.internal_state_directory }} |
||||||
|
runs-on: ubuntu-latest |
||||||
|
if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'" |
||||||
|
concurrency: |
||||||
|
group: spelling-${{ github.event.pull_request.number || github.ref }} |
||||||
|
# note: If you use only_check_changed_files, you do not want cancel-in-progress |
||||||
|
cancel-in-progress: true |
||||||
|
steps: |
||||||
|
- name: checkout-merge |
||||||
|
if: "contains(github.event_name, 'pull_request')" |
||||||
|
uses: actions/checkout@v2 |
||||||
|
with: |
||||||
|
ref: refs/pull/${{github.event.pull_request.number}}/merge |
||||||
|
- name: checkout |
||||||
|
if: github.event_name == 'push' |
||||||
|
uses: actions/checkout@v2 |
||||||
|
- name: check-spelling |
||||||
|
id: spelling |
||||||
|
uses: check-spelling/check-spelling@prerelease |
||||||
|
with: |
||||||
|
experimental_apply_changes_via_bot: 1 |
||||||
|
suppress_push_for_open_pull_request: 1 |
||||||
|
post_comment: 0 |
||||||
|
- name: store-comment |
||||||
|
if: failure() |
||||||
|
uses: actions/upload-artifact@v2 |
||||||
|
with: |
||||||
|
retention-days: 1 |
||||||
|
name: "check-spelling-comment-${{ github.run_id }}" |
||||||
|
path: | |
||||||
|
${{ steps.spelling.outputs.internal_state_directory }} |
||||||
|
|
||||||
|
comment: |
||||||
|
name: Comment |
||||||
|
runs-on: ubuntu-latest |
||||||
|
needs: spelling |
||||||
|
permissions: |
||||||
|
contents: write |
||||||
|
pull-requests: write |
||||||
|
if: always() && needs.spelling.result == 'failure' && needs.spelling.outputs.internal_state_directory |
||||||
|
steps: |
||||||
|
- name: checkout |
||||||
|
uses: actions/checkout@v2 |
||||||
|
- name: set up |
||||||
|
run: | |
||||||
|
mkdir /tmp/data |
||||||
|
- name: retrieve-comment |
||||||
|
uses: actions/download-artifact@v2 |
||||||
|
with: |
||||||
|
name: "check-spelling-comment-${{ github.run_id }}" |
||||||
|
path: /tmp/data |
||||||
|
- name: comment |
||||||
|
uses: check-spelling/check-spelling@prerelease |
||||||
|
with: |
||||||
|
experimental_apply_changes_via_bot: 1 |
||||||
|
custom_task: comment |
||||||
|
internal_state_directory: /tmp/data |
||||||
|
|
||||||
|
update: |
||||||
|
name: Update PR |
||||||
|
permissions: |
||||||
|
contents: write |
||||||
|
pull-requests: write |
||||||
|
runs-on: ubuntu-latest |
||||||
|
if: ${{ |
||||||
|
github.event_name == 'issue_comment' && |
||||||
|
github.event.issue.pull_request && |
||||||
|
contains(github.event.comment.body, '@check-spelling-bot apply') |
||||||
|
}} |
||||||
|
concurrency: |
||||||
|
group: spelling-update-${{ github.event.issue.number }} |
||||||
|
cancel-in-progress: false |
||||||
|
steps: |
||||||
|
- name: checkout |
||||||
|
uses: actions/checkout@v2 |
||||||
|
- name: check-spelling |
||||||
|
uses: check-spelling/check-spelling@prerelease |
||||||
|
with: |
||||||
|
experimental_apply_changes_via_bot: 1 |
||||||
Loading…
Reference in new issue