Merge pull request #19 from nesi/CID-2388 #61
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: Checks | |
env: | |
MODULE_LIST_PATH: docs/assets/module-list.json | |
on: | |
push: | |
workflow_dispatch: | |
inputs: | |
fileList: | |
description: Files to Lint (space delimited). Use `docs/**/*.md` to lint all. | |
required: true | |
default: "docs/CONTRIBUTING.md" | |
type: string | |
checkSpelling: | |
description: Check Spelling | |
default: true | |
type: boolean | |
checkProse: | |
description: Check Prose | |
default: true | |
type: boolean | |
checkMarkdown: | |
description: Check Markdown | |
default: true | |
type: boolean | |
checkMeta: | |
description: Check Meta | |
default: true | |
type: boolean | |
testBuild: | |
description: Test Build | |
default: true | |
type: boolean | |
jobs: | |
get: | |
name: Determine what files to check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get changed files | |
id: get-changed-files | |
uses: tj-actions/changed-files@v40 | |
with: | |
files: | | |
docs/**/*.md | |
- name: Push Changed files to output | |
if: inputs.fileList == '' | |
id: diff | |
run: | | |
echo "Changed files: ${{steps.get-changed-files.outputs.all_changed_files}}" | |
echo "filelist=${{steps.get-changed-files.outputs.all_changed_files}}" >> $GITHUB_OUTPUT | |
outputs: | |
filelist: ${{steps.diff.outputs.filelist || inputs.fileList}} | |
spellcheck: | |
name: Check Spelling | |
if: ${{ github.event_name != 'workflow_dispatch' || inputs.checkSpelling }} | |
runs-on: ubuntu-latest | |
needs: get | |
steps: | |
- if: ${{! needs.get.outputs.filelist}} | |
name: No files to spellcheck | |
run: exit 0 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Check out repo. | |
uses: actions/checkout@v4 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Install dependencies | |
run: | | |
sudo apt install -y aspell | |
pip install pyspelling flashtext | |
- if: ${{needs.get.outputs.filelist}} | |
name: Run pyspelling | |
run: | | |
shopt -s globstar extglob | |
python3 checks/run_pyspelling.py ${{needs.get.outputs.filelist}} | |
proselint: | |
name: Check Prose | |
if: ${{github.event_name != 'workflow_dispatch'|| inputs.checkProse}} | |
runs-on: ubuntu-latest | |
needs: get | |
steps: | |
- if: ${{! needs.get.outputs.filelist}} | |
name: No files to proselint | |
run: exit 0 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Check out repo. | |
uses: actions/checkout@v4 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Install dependencies | |
run: pip install proselint | |
- if: ${{needs.get.outputs.filelist}} | |
name: Run proselint | |
run: | | |
shopt -s globstar extglob | |
python3 checks/run_proselint.py ${{needs.get.outputs.filelist}} | |
mdlint: | |
name: Check Markdown | |
if: ${{github.event_name != 'workflow_dispatch' || inputs.checkMarkdown}} | |
runs-on: ubuntu-latest | |
needs: get | |
steps: | |
- if: ${{! needs.get.outputs.filelist}} | |
name: No files to check Markdown | |
run: exit 0 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Check out repo. | |
uses: actions/checkout@v4 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Install dependencies | |
run: npm install -g markdownlint-cli | |
- if: ${{needs.get.outputs.filelist}} | |
name: Run markdownlint | |
run: | | |
shopt -s globstar extglob | |
markdownlint --config .markdownlint.json --json ${{needs.get.outputs.filelist}} 2>&1 | checks/parse_markdownlint.py | |
metacheck: | |
name: Check page meta | |
if: ${{github.event_name != 'workflow_dispatch'|| inputs.checkMeta}} | |
runs-on: ubuntu-latest | |
needs: get | |
steps: | |
- if: ${{ ! needs.get.outputs.filelist}} | |
name: No files to check meta on. | |
run: exit 0 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Check out repo. | |
uses: actions/checkout@v4 | |
- if: ${{needs.get.outputs.filelist}} | |
name: Check markdown meta. | |
run: | | |
shopt -s globstar extglob | |
python3 checks/run_meta_check.py ${{needs.get.outputs.filelist}} | |
testBuild: | |
name: Test build | |
if: ${{github.event_name != 'workflow_dispatch' || inputs.testBuild}} | |
runs-on: ubuntu-latest | |
needs: get | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- run: pip install -r requirements.txt | |
- run: mkdocs build --strict 2>&1 | awk -F " - " '{gsub(/ /, "", $1);gsub(/INFO/, "notice", $1); printf("::%s::%s\n",$1,$2) }' |