name: lint
on: [push, pull_request]
permissions:
  contents: read # to fetch code (actions/checkout)
env:
  # note that some tools care only for the name, not the value
  FORCE_COLOR: 1
jobs:
  lint:
    name: ${{ matrix.python-version }} / tox-${{ matrix.toxenv || '(other)' }}
    timeout-minutes: 10
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        toxenv: [lint, pycodestyle]
        python-version: [ "3.12" ]
        include:
          # for actions that want git env, not tox env
          - toxenv: null
            python-version: "3.12"
    steps:
      - uses: actions/checkout@v6
      - name: Using Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
          cache: pip
      - name: Install Dependencies (tox)
        if: ${{ matrix.toxenv }}
        run: |
          python -m pip install --upgrade pip
          python -m pip install tox
      - run: tox -e ${{ matrix.toxenv }}
        if: ${{ matrix.toxenv }}
      - name: Install Dependencies (non-toxic)
        if: ${{ ! matrix.toxenv }}
        run: |
          python -m pip install --upgrade pip
          python -m pip install -e .
      - name: "Check generated docs"
        if: ${{ ! matrix.toxenv }}
        run: |
          # Regenerate settings.md and check for uncommitted changes
          python scripts/build_settings_doc.py
          if unclean=$(git status --untracked-files=no --porcelain) && [ -z "$unclean" ]; then
            echo "no uncommitted changes in working tree (as it should be)"
          else
            echo "did you forget to run 'python scripts/build_settings_doc.py'?"
            echo "$unclean"
            git diff
            exit 2
          fi
