name: Docs

on:
  push:
    branches:
      - "**"
    paths:
      - ".github/workflows/docs.yml"
      - "docs/**"
      - "src/PIL/**"
  pull_request:
    paths:
      - ".github/workflows/docs.yml"
      - "docs/**"
      - "src/PIL/**"
  workflow_dispatch:

permissions:
  contents: read

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

env:
  FORCE_COLOR: 1

jobs:
  build:

    runs-on: ubuntu-latest
    name: Docs

    steps:
    - uses: actions/checkout@v6
      with:
        persist-credentials: false

    - name: Set up Python
      uses: actions/setup-python@v6
      with:
        python-version: "3.x"
        cache: pip
        cache-dependency-path: |
          ".ci/*.sh"
          "pyproject.toml"

    - name: Build system information
      run: python3 .github/workflows/system-info.py

    - name: Cache libavif
      uses: actions/cache@v5
      id: cache-libavif
      with:
        path: ~/cache-libavif
        key: ${{ runner.os }}-libavif-${{ hashFiles('depends/install_libavif.sh', 'depends/libavif-svt4.patch') }}

    - name: Cache libimagequant
      uses: actions/cache@v5
      id: cache-libimagequant
      with:
        path: ~/cache-libimagequant
        key: ${{ runner.os }}-libimagequant-${{ hashFiles('depends/install_imagequant.sh') }}

    - name: Cache libwebp
      uses: actions/cache@v5
      id: cache-libwebp
      with:
        path: ~/cache-libwebp
        key: ${{ runner.os }}-libwebp-${{ hashFiles('depends/install_webp.sh') }}

    - name: Install Linux dependencies
      run: |
        .ci/install.sh
      env:
        GHA_PYTHON_VERSION: "3.x"
        GHA_LIBAVIF_CACHE_HIT: ${{ steps.cache-libavif.outputs.cache-hit }}
        GHA_LIBIMAGEQUANT_CACHE_HIT: ${{ steps.cache-libimagequant.outputs.cache-hit }}
        GHA_LIBWEBP_CACHE_HIT: ${{ steps.cache-libwebp.outputs.cache-hit }}

    - name: Build
      run: |
        .ci/build.sh

    - name: Docs
      run: |
        make doccheck
