# GitHub Action to check our dictionary, this should only be used by the codespell project itself
# For general usage in your repo, see the example in codespell.yml
# https://github.com/codespell-project/codespell
name: codespell Private Actions
on: [push, pull_request]
jobs:
  test:
    env:
      REQUIRE_ASPELL: true
    # Make sure we're using the latest aspell dictionary
    runs-on: ubuntu-20.04
    strategy:
      matrix:
        python-version:
          - 3.6
          - 3.7
          - 3.8
          - 3.9
    name: Python ${{ matrix.python-version }} test
    steps:
      - uses: actions/checkout@v3
      - name: Setup python
        uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}
      - run: sudo apt-get install libaspell-dev aspell-en
      - run: |
          python --version  # just to check
          pip install -U pip wheel # upgrade to latest pip find 3.5 wheels; wheel to avoid errors
          pip install codecov chardet "setuptools!=47.2.0" docutils
          pip install aspell-python-py3
          pip install -e ".[dev]" # install the codespell dev packages
      - run: python setup.py install
      - run: codespell --help
      - run: make check
      - run: codespell --check-filenames --skip="./.git/*,*.pyc,./codespell_lib/tests/test_basic.py,./codespell_lib/data/*,./example/code.c,./build/lib/codespell_lib/tests/test_basic.py,./build/lib/codespell_lib/data/*,README.rst,*.egg-info/*"
      # this file has an error
      - run: "! codespell codespell_lib/tests/test_basic.py"
      - run: codecov

  make-check-dictionaries:
    runs-on: ubuntu-latest
    steps:
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: 3.x
      - uses: actions/checkout@v3
      - name: Install general dependencies
        run: pip install -U pip wheel # upgrade to latest pip find 3.5 wheels; wheel to avoid errors
      - name: Install codespell dependencies
        run: pip install -e ".[dev]"
      - uses: codespell-project/sort-problem-matcher@v1
      - run: make check-dictionaries

  flake8-annotation:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Flake8 with annotations
        uses: TrueBrain/actions-flake8@v2
