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