name: SpellCheck

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-20.04
    name: Lint changed files
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0  # OR "2" -> To retrieve the preceding commit.

      - name: Check links in all markdown files
        uses: gaurav-nelson/github-action-markdown-link-check@1.0.13
        with:
          use-verbose-mode: 'yes'
          config-file: "scripts/markdown_link_check_config.json"

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v29.0.4
        with:

          files: |
            **/*.py

  spellcheck:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v3

      - name: Install dependencies
        run: |
          sudo apt-get install aspell aspell-en
          pip install pyspelling

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v29.0.4
        with:
          files: |
            **/*.md

      - name: Check spellings
        run: |
          sources=""
          for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
            sources="${sources} -S $file"
          done
          if [ ! "$sources" ]; then
            echo "No files to spellcheck"
          else
            pyspelling -c $GITHUB_WORKSPACE/scripts/spellcheck_conf/spellcheck.yaml --name Markdown $sources
          fi

      - name: In the case of misspellings
        if: ${{ failure() }}
        run: |
          echo "Please fix the misspellings. If you are sure about some of them, "
          echo "so append those to scripts/spellcheck_conf/wordlist.txt"