name: Build and publish API docs

on:
  push:
    branches: [main, develop, v2_develop]

permissions:
  id-token: write 
  pages: write

jobs:
  deploy:
    name: Build and Deploy API docs to github-pages ${{ github.ref_name }}
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: windows-latest
    steps:
    - name: Checkout
      if: github.ref_name == 'main' ||  github.ref_name == 'develop'
      uses: actions/checkout@v4

    - name: DocFX Build
      if: github.ref_name == 'main' ||  github.ref_name == 'develop'
      working-directory: docfx
      run: |
        dotnet tool install -g docfx
        $env:DOCFX_SOURCE_BRANCH_NAME="${{ github.ref_name }}"
        docfx metadata
        docfx build
      continue-on-error: false

    - name: Setup Pages
      if: github.ref_name == 'main' ||  github.ref_name == 'develop'
      uses: actions/configure-pages@v4
      
    - name: Upload artifact
      if: github.ref_name == 'main' ||  github.ref_name == 'develop'
      uses: actions/upload-pages-artifact@v3
      with:
        path: docfx/_site
       
    - name: Deploy to GitHub Pages
      if: github.ref_name == 'main' ||  github.ref_name == 'develop'
      id: deployment
      uses: actions/deploy-pages@v4
      with:
        token: ${{ secrets.GITHUB_TOKEN }}

    - name: v2_develop Repository Dispatch ${{ github.ref_name }}
      if: github.ref_name == 'v2_develop'
      uses: peter-evans/repository-dispatch@v2
      with:
        token: ${{ secrets.V2DOCS_TOKEN }}
        repository: gui-cs/Terminal.GuiV2Docs
        event-type: v2_develop_push
        client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
