name: Docs

on:
  pull_request:
    paths:
      - ".github/workflows/docs.yml"
  push:
    branches:
      - trunk

env:
  # This is the MSRV used by `wgpu` itself and all surrounding infrastructure.
  REPO_MSRV: "1.85"

  CARGO_INCREMENTAL: false
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: full

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          persist-credentials: false

      - name: Install documentation toolchain
        run: |
          rustup toolchain install ${{ env.REPO_MSRV }} --no-self-update --profile=minimal
          rustup override set ${{ env.REPO_MSRV }}

      - name: Disable debug symbols
        shell: bash
        run: |
          mkdir -p .cargo

          cat <<EOF >> .cargo/config.toml
            [profile.dev]
            debug = false
          EOF

      - name: Caching
        uses: Swatinem/rust-cache@v2
        with:
          key: doc-build

      - name: Build the docs
        run: |
          cargo doc --no-deps --lib --document-private-items
        env:
          RUSTDOCFLAGS: --cfg docsrs
          RUSTC_BOOTSTRAP: 1

      - name: Deploy the docs
        uses: JamesIves/github-pages-deploy-action@v4.7.3
        if: github.ref == 'refs/heads/trunk'
        with:
          token: ${{ secrets.WEB_DEPLOY }}
          folder: target/doc
          repository-name: gfx-rs/wgpu-rs.github.io
          branch: master
          target-folder: doc
