name: Build API Docs (Rustdoc)
on:
  pull_request:
    branches: [master]
    paths:
      - "packages/**"
      - "firebase.json"
      - ".github/workflows/*-docs.yml"
  push:
    branches: [master]
    paths:
      - "packages/**"
      - "firebase.json"
      - ".github/workflows/*-docs.yml"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: nightly
          components: rust-docs

      - name: Run cargo doc
        env:
          RUSTDOCFLAGS: --cfg documenting --html-before-content ./api-docs/before-content.html --extend-css ./api-docs/styles.css -Z unstable-options --enable-index-page
        run: |
          cargo doc \
            --no-deps \
            --all-features \
            -p yew \
            -p yew-macro \
            -p yew-router \
            -p yew-router-macro \
            -p yew-agent

      - name: Move files in correct directory
        run: |
          mkdir -p api-docs/dist/next
          cp -r target/doc/* api-docs/dist/next

      - name: Upload build artifact
        uses: actions/upload-artifact@v4
        with:
          name: api-docs
          path: api-docs/
          retention-days: 1

      - if: github.event_name == 'pull_request'
        name: Build pr info
        run: |
          echo "${{ github.event.number }}" > .PR_INFO

      - if: github.event_name == 'pull_request'
        name: Upload pr info
        uses: actions/upload-artifact@v4
        with:
          name: pr-info
          include-hidden-files: true
          path: .PR_INFO
          retention-days: 1
