name: Lint
on:
  pull_request:
    paths:
      - '**'
      - '!mkdocs.yml'
      - '!docs/**'
      - '!*.md'

jobs:
  lint:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-24.04]
    runs-on: ${{ matrix.os }}
    timeout-minutes: 10
    steps:
    - uses: actions/checkout@v4
    - name: Cache for pip
      uses: actions/cache@v3
      with:
        path: ~/.cache/pip
        key: ${{ matrix.os }}-cache-pip

    - name: Install dependencies
      run: |
        sudo apt install -y shfmt python3 python3-venv
        python3 -m venv -- .venv
        ./.venv/bin/pip install uv
        ./.venv/bin/uv sync --group dev --extra gdb --extra lldb

    - name: Run linters
      run: |
        git diff-index --quiet HEAD -- pwndbg tests
        ./lint.sh

    - name: Run mypy
      uses: tsuyoshicho/action-mypy@v4
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        # Change reviewdog reporter if you need [github-pr-check,github-check,github-pr-review].
        reporter: github-pr-check
        # Change reporter level if you need.
        # GitHub Status Check won't become failure with warning.
        level: error
        # Change the current directory to run mypy command.
        # mypy command reads setup.cfg or other settings file in this path.
        execute_command: ./.venv/bin/uv run --only-group lint mypy
        install_types: false
        target: pwndbg
        filter_mode: nofilter
        fail_on_error: true
