name: Upload Documentation

on:
  push:
    branches: [master]

permissions:
  contents: read

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

jobs:
  build:
    permissions:
      contents: write

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Install Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1.8.0
        with:
          toolchain: nightly

      - name: Build Docs
        run: cargo +nightly doc --no-deps --workspace --all-features
        env:
          RUSTDOCFLAGS: --cfg=docsrs

      - name: Tweak HTML
        run: echo '<meta http-equiv="refresh" content="0;url=actix_web/index.html">' > target/doc/index.html

      - name: Deploy to GitHub Pages
        uses: JamesIves/github-pages-deploy-action@v4.6.0
        with:
          folder: target/doc
          single-commit: true