name: Publish to GitHub Pages

on:
  release:
    types: [published]

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

jobs:
  publish-to-pages:
    name: Publish to GitHub Pages
    runs-on: ubuntu-slim
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Download release assets
        run: |
          # Create directory structure
          mkdir -p pages/update/win32/x64
          mkdir -p pages/update/darwin/arm64

          # Download and extract web build from the release
          gh release download ${{ github.event.release.tag_name }} --pattern "respira-web-*.zip"
          unzip -q respira-web-*.zip -d pages/

          # Download Windows auto-update files from the release
          gh release download ${{ github.event.release.tag_name }} --pattern "*.exe" --dir pages/update/win32/x64
          gh release download ${{ github.event.release.tag_name }} --pattern "*.nupkg" --dir pages/update/win32/x64
          gh release download ${{ github.event.release.tag_name }} --pattern "RELEASES" --dir pages/update/win32/x64

          # Download macOS auto-update files from the release
          gh release download ${{ github.event.release.tag_name }} --pattern "*-darwin-arm64-*.zip" --dir pages/update/darwin/arm64
          gh release download ${{ github.event.release.tag_name }} --pattern "RELEASES.json" --dir pages/update/darwin/arm64
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

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

      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: "pages"

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