name: Docs

on:
  push:
    branches: [master]

jobs:
  docs:
    name: Documentation
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}winit

    runs-on: ubuntu-latest

    permissions:
      contents: read
      pages: write
      id-token: write

    steps:
      - uses: actions/checkout@v6

      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: nightly

      - name: Run Rustdoc
        env:
          RUSTDOCFLAGS: --crate-version master --cfg=docsrs --cfg=unreleased_changelogs
        run: |
          cargo doc --no-deps -Z rustdoc-map -Z rustdoc-scrape-examples --features=serde,mint,android-native-activity

      - name: Setup Pages
        uses: actions/configure-pages@v6

      - name: Fix permissions
        run: |
          chmod -c -R +rX "target/doc" | while read line; do
            echo "::warning title=Invalid file permissions automatically fixed::$line"
          done

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v4
        with:
          path: target/doc

      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v5
