name: Lint

on:
  schedule:
    - cron: 00 00 * * 1
  push:
    branches: [main]
  pull_request:
    branches: [main]

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    name: Lint ${{ matrix.lint-kind }}
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        lint-kind: [code, docs]

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Set up Python 3.10
        uses: actions/setup-python@v4
        with:
          python-version: "3.10"

      - name: Cache pre-commit
        uses: actions/cache@v3
        if: ${{ matrix.lint-kind == 'code' }}
        with:
          path: ~/.cache/pre-commit
          key: pre-commit-${{ env.pythonLocation }}-${{ hashFiles('**/.pre-commit-config.yaml') }}

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install tox

      - name: Install PyEnchant
        if: ${{ matrix.lint-kind == 'docs' }}
        run: |
          sudo apt-get update -y
          sudo apt-get install libenchant-2-dev
          python -m pip install pyenchant

      - name: Lint ${{ matrix.lint-kind }}
        run: |
          tox -e lint-${{ matrix.lint-kind }}
