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

CSpell Action #75

Merged
merged 13 commits into from
Sep 5, 2023
Merged
49 changes: 45 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,17 +83,58 @@ jobs:
test-spell-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v2
- uses: actions/checkout@v3

- uses: actions/checkout@v3
with:
repository: FreeRTOS/coreMQTT
ref: main
repository: skptak/coreMQTT
Skptak marked this conversation as resolved.
Show resolved Hide resolved
ref: CI-CD-Updates
path: coreMQTT

- name: Test spell check action
uses: ./spellings
with:
path: coreMQTT

test-spell-checker-find-mistake:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/checkout@v3
with:
repository: skptak/coreMQTT
Skptak marked this conversation as resolved.
Show resolved Hide resolved
ref: CI-CD-Updates
path: coreMQTT

- name: Empty the lexicon
shell: bash
working-directory: coreMQTT
run: file=$(find . -name .cSpellWords.txt); readlink -f "$file" ; > "$file"

- name: Test Spell Check Fails on Misspelled Word
continue-on-error: true
id: test-spellings-find-mistake
uses: ./spellings
with:
path: coreMQTT

- env:
stepName: Check Failure Test Case
name: ${{ env.stepName }}
id: check-failure-test-cases
shell: bash
run: |
# ${{ env.stepName }}
exitStatus=0
if [ "${{ steps.test-spellings-find-mistake.outcome}}" = "failure" ]; then
echo -e "${{ env.bashPass }} Functional | Failure | Fail on Misspelled Word | Had Expected "failure" ${{ env.bashEnd }}"
else
echo -e "${{ env.bashFail }} Functional | Failure | Fail on Misspelled Word | Had Unexpected "success" ${{ env.bashEnd }}"
exitStatus=1
fi
exit $exitStatus

test-coverage-cop:
runs-on: ubuntu-latest
steps:
Expand Down
134 changes: 114 additions & 20 deletions spellings/action.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,123 @@
name: 'spellings'
description: 'CI spellings check'
description: 'cSpell CI spelling check'
inputs:
path:
description: 'Path to repository folder to check spellings in.'
required: false
default: ./
exclude-dirs:
description: "Comma separated list of directories to not spell check"
required: false
exclude-files:
description: "Comma separated list of files to not spell check"
required: false
include-extensions:
description: "Comma separated list of files to match to regex"
required: false


runs:
using: "composite"
steps:
- name: Install spell
run: |
sudo apt-get install spell
sudo apt-get install util-linux
shell: bash
- name: Check spelling
working-directory: ${{ inputs.path }}
run: |
PATH=$PATH:$GITHUB_ACTION_PATH/tools
for lexfile in `find ./ -name lexicon.txt`
do dir=${lexfile%/lexicon.txt}
echo $dir
find-unknown-comment-words --directory $dir
if [ $? -ne "0" ]
then
exit 1
fi
done
shell: bash
- env:
bashPass: \033[32;1mPASSED -
bashInfo: \033[33;1mINFO -
bashFail: \033[31;1mFAILED -
bashEnd: \033[0m
stepName: Set-Up The Spell Checker
name: ${{ env.stepName }}
id: spell-checker-setup
shell: bash
run: |
# ${{ env.stepName }}
echo -e "::group::${{ env.bashInfo }} ${{ env.stepName }} ${{ env.bashEnd }}"

# Install the Dependencies we need to run the spell-checker
sudo apt-get install util-linux -y
sudo apt-get install fd-find -y
sudo apt-get install npm -y
sudo npm install -g cspell
echo -e "::endgroup::"

# Add the Github Action Path to PATH
export PATH="$GITHUB_ACTION_PATH:$PATH"

# Account for starting with an alternate path in a repository
# Do this by copying the cspell config and wordlist to the desired path
# Wrap in a set +e so Github doesn't throw an error if the file or
# directory already exists.
set +e
cp cspell.config.yaml ${{ inputs.path }}
mkdir ${{ inputs.path }}/.github
cp .github/.cSpellWords.txt ${{ inputs.path }}/.github
cd ${{ inputs.path }}
set -e

# Make sure we have all the commands we need.
echo -e "${{ env.bashInfo }} fdfind --version $(fdfind --version) ${{ env.bashEnd }}"
echo -e "${{ env.bashInfo }} cspell --version $(cspell --version) ${{ env.bashEnd }}"

# Only reach this line if no errors were hit above
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"

- env:
bashPass: \033[32;1mPASSED -
bashInfo: \033[33;1mINFO -
bashFail: \033[31;1mFAILED -
bashEnd: \033[0m
stepName: Spell Checker
name: ${{ env.stepName }}
id: run-spell-checker
working-directory: ${{ inputs.path }}
shell: bash
run: |
# ${{ env.stepName }}
#echo -e "::group::${{ env.stepName }}"
export PATH="$GITHUB_ACTION_PATH:$PATH"
exitStatus=0

# Parse the optional inputs
args=""

# fd-find uses -E to exclude a file or directory
if [ -n "${{ inputs.exclude-dirs }}" ]; then
dirs=" -E "
dirs+="${{ inputs.exclude-dirs }}"
dirs="${dirs//,/ -E }"
args+=" ${dirs}"
fi

# fd-find uses -E to exclude a file or directory
if [ -n "${{ inputs.exclude-files }}" ]; then
files=" -E "
files+="${{ inputs.exclude-files }}"
files="${files//,/ -E }"
args+=" ${files}"
fi

# fd-find uses -e to exclude a file extension
if [ -n "${{ inputs.include-file-types }}" ]; then
file_types=" -e "
file_types+="${{ inputs.include-file-types }}"
file_types="${file_types//,/ -e }"
args+=" ${file_types}"
fi

echo -e "${{ env.bashInfo }} Running: fdfind -e c -e h -e md -e txt -e readme ${args} --exec cspell lint --language-id C --color --show-context --show-suggestions --no-must-find-files -c cspell.config.yaml ${{ env.bashEnd }}"

# Wrap in a set +e so Github doesn't stop the spell check from running
set +e

# Find all relevant files, then check them for spelling mistakes
fdfind -e c -e h -e md -e txt -e readme ${args} --exec-batch \
cspell lint --language-id C --color --show-context --show-suggestions --no-must-find-files -c cspell.config.yaml
exitStatus=$?
set -e

echo -e "::endgroup::"
if [ $exitStatus -eq 0 ]; then
echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }}"
Skptak marked this conversation as resolved.
Show resolved Hide resolved
else
echo -e "${{ env.bashFail }} ${{ env.stepName }} ${{ env.bashEnd }}"
fi
exit $exitStatus
31 changes: 31 additions & 0 deletions spellings/cspell.config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
$schema: https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json
version: '0.2'
# Allows things like stringLength
allowCompoundWords: true

# Read files not to spell check from the git ignore
useGitignore: true

# Language settings for C
languageSettings:
- caseSensitive: false
enabled: true
languageId: c
locale: "*"

# Add a dictionary, and the path to the word list
dictionaryDefinitions:
- name: freertos-words
path: '.github/.cSpellWords.txt'
addWords: true

dictionaries:
- freertos-words

# Paths and files to ignore
ignorePaths:
- 'dependency'
- 'docs'
- 'ThirdParty'
- 'History.txt'
30 changes: 0 additions & 30 deletions spellings/tools/README.md

This file was deleted.

88 changes: 0 additions & 88 deletions spellings/tools/ablexicon

This file was deleted.

Loading
Loading