name: Publish API Docs
on:
  workflow_run:
    workflows: ["Build API Docs (Rustdoc)"]
    types:
      - completed

jobs:
  publish:
    if: github.event.workflow_run.conclusion == 'success'
    runs-on: ubuntu-latest

    steps:
      # need to checkout to get "firebase.json", ".firebaserc"
      - uses: actions/checkout@v4

      - name: Download build artifact
        uses: actions/download-artifact@v4
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
          run-id: ${{ github.event.workflow_run.id }}
          name: api-docs
          path: api-docs/

      - if: github.event.workflow_run.event == 'pull_request'
        name: Download pr info
        uses: actions/download-artifact@v4
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"
          run-id: ${{ github.event.workflow_run.id }}
          name: pr-info
          path: artifacts

      - if: github.event.workflow_run.event == 'pull_request'
        name: Apply pull request environment
        run: |
          pr_number=$(cat "artifacts/.PR_INFO")
          if ! [[ "$pr_number" =~ ^[0-9]+$ ]]; then
            echo "pr number invalid"
            exit 1
          fi
          echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV
          echo "PR_BRANCH=${{ github.event.workflow_run.head_branch }}" >> $GITHUB_ENV
          echo "COMMIT_SHA=${{ github.event.workflow_run.head_sha }}" >> $GITHUB_ENV

      - if: github.event.workflow_run.event == 'push'
        name: Apply push environment
        run: |
          echo "CHANNEL_ID=live" >> $GITHUB_ENV

      - name: Deploy to Firebase
        uses: siku2/action-hosting-deploy@v1
        with:
          repoToken: "${{ secrets.GITHUB_TOKEN }}"
          firebaseToken: "${{ secrets.FIREBASE_TOKEN }}"
          targets: api
          channelId: "${{ env.CHANNEL_ID }}"
          # link to the next version because that's what we care about
          commentURLPath: "/next/yew"
          # PR information
          prNumber: "${{ env.PR_NUMBER }}"
          prBranchName: "${{ env.PR_BRANCH }}"
          commitSHA: "${{ env.COMMIT_SHA }}"
