Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spelling.yml add #311

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
206 changes: 206 additions & 0 deletions .github/workflows/spelling.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
name: Check Spelling

# Comment management is handled through a secondary job, for details see:
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
#
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare)
# it needs `contents: write` in order to add a comment.
#
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
# or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
# it needs `pull-requests: write` in order to manipulate those comments.

# Updating pull request branches is managed via comment handling.
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
#
# These elements work together to make it happen:
#
# `on.issue_comment`
# This event listens to comments by users asking to update the metadata.
#
# `jobs.update`
# This job runs in response to an issue_comment and will push a new commit
# to update the spelling metadata.
#
# `with.experimental_apply_changes_via_bot`
# Tells the action to support and generate messages that enable it
# to make a commit to update the spelling metadata.
#
# `with.ssh_key`
# In order to trigger workflows when the commit is made, you can provide a
# secret (typically, a write-enabled github deploy key).
#
# For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key

# Sarif reporting
#
# Access to Sarif reports is generally restricted (by GitHub) to members of the repository.
#
# Requires enabling `security-events: write`
# and configuring the action with `use_sarif: 1`
#
# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Sarif-output

# Minimal workflow structure:
#
# on:
# push:
# ...
# pull_request_target:
# ...
# jobs:
# # you only want the spelling job, all others should be omitted
# spelling:
# # remove `security-events: write` and `use_sarif: 1`
# # remove `experimental_apply_changes_via_bot: 1`
# ... otherwise adjust the `with:` as you wish

on:
push:
branches:
- "**"
tags-ignore:
- "**"
pull_request_target:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can just use the pull_request trigger like here

branches:
- "**"
types:
- 'opened'
- 'reopened'
- 'synchronize'
issue_comment:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we don't need to run spell check for issue comments.

types:
- 'created'

jobs:
spelling:
name: Check Spelling
permissions:
contents: read
pull-requests: read
actions: read
security-events: write
outputs:
followup: ${{ steps.spelling.outputs.followup }}
internal_state_directory: ${{ steps.spelling.outputs.internal_state_directory }}
docker_container: ${{ steps.spelling.outputs.docker_container }}
env:
workflow_check_commit_messages: commits
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it check for spelling mistakes in commit messages too ?

runs-on: ubuntu-latest
if: ${{ contains(github.event_name, 'pull_request') || github.event_name == 'push' }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this check ?

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
uses: actions/checkout@v4
with:
fetch-depth: ${{ !contains(env.workflow_check_commit_messages, 'commits') && '1' || '0' }}
- name: test-clean
shell: bash
run:
cp -R . ../introspected/;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this step ?

mv ../introspected .
- name: test-merge
if: ${{ contains(github.event_name, 'pull_request') }}
uses: check-spelling/[email protected]
Copy link
Member

@sivanantha321 sivanantha321 Oct 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need this action ? I believe we can remove this step.

with:
path: introspected
- name: check-spelling
if: env.MERGE_FAILED != '1'
id: spelling
uses: ./
Copy link
Member

@sivanantha321 sivanantha321 Oct 27, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe you have to specify the action check-spelling/check-spelling@main here since the action is not defined in this repo. You can refer this workflow

with:
suppress_push_for_open_pull_request: 1
check_file_names: 1
experimental_path: introspected
spell_check_this: check-spelling/spell-check-this@prerelease
checkout: false
post_comment: 0
use_magic_file: 1
report-timing: 1
experimental_apply_changes_via_bot: 1
use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }}
extra_dictionary_limit: 10
# this repository doesn't use php, but the dictionary has fairly good coverage
extra_dictionaries:
cspell:software-terms/dict/softwareTerms.txt
cspell:php/dict/php.txt
cspell:node/node.txt
cspell:python/src/python/python-lib.txt
check_commit_messages: ${{ env.workflow_check_commit_messages }}
ignore-pattern: '[^\p{Ll}\p{Lm}\p{Lt}\p{Lu}]'
upper-pattern: '[\p{Lu}\p{Lt}\p{Lm}]'
lower-pattern: '[\p{Ll}\p{Lm}]'
not-lower-pattern: '[^\p{Ll}\p{Lm}]'
not-upper-or-lower-pattern: '[^\p{Lu}\p{Lt}\p{Lm}]'
punctuation-pattern: "'"

comment-push:
name: Report (Push)
# If your workflow isn't running on push, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
contents: write
if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
steps:
- name: checkout
uses: actions/checkout@v4
- name: comment
uses: ./
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have to use check-spelling/check-spelling@main action here

with:
checkout: false
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
internal_state_directory: ${{ needs.spelling.outputs.docker_container && needs.spelling.outputs.internal_state_directory }}
caller_container: ${{ needs.spelling.outputs.docker_container }}

comment-pr:
name: Report (PR)
# If you workflow isn't running on pull_request*, you can remove this job
runs-on: ubuntu-latest
needs: spelling
permissions:
contents: read
pull-requests: write
if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
steps:
- name: checkout
uses: actions/checkout@v4
- name: comment
uses: ./
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have to use check-spelling/check-spelling@main action here

with:
checkout: false
spell_check_this: check-spelling/spell-check-this@prerelease
task: ${{ needs.spelling.outputs.followup }}
internal_state_directory: ${{ needs.spelling.outputs.docker_container && needs.spelling.outputs.internal_state_directory }}
caller_container: ${{ needs.spelling.outputs.docker_container }}
experimental_apply_changes_via_bot: 1

update:
name: Update PR
permissions:
contents: write
pull-requests: write
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this job correct the spelling mistakes in the PR? If yes, then I think it is best to leave it to the contributor rather than updating it here. WDYT ?

actions: read
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@v4
- name: apply spelling updates
uses: ./
with:
experimental_apply_changes_via_bot: 1
checkout: false
ssh_key: "${{ secrets.CHECK_SPELLING }}"
1 change: 1 addition & 0 deletions spell-test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Thsi flie will chekc for spellign erors.