name: Deploy to GitHub Pages

on:
  workflow_dispatch:
  release:
    types: [released]
    # Review gh actions docs if you want to further define triggers, paths, etc
    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on

jobs:
  deploy:
    name: Deploy to GitHub Pages
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
        with:
          persist-credentials: false
      - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f #6.3.0
        with:
          node-version: 24
          cache: npm

      - name: Install app dev dependencies
        run: npm ci
      - name: Generate schema files
        run: npm run schema

      - name: Install docusaurus dependencies
        run: npm ci
        working-directory: ./docsite

      - name: Build website
        env:
          RY_ANALYTICS: ${{ vars.RY_ANALYTICS }}
          RY_ANALYTICS_SITEID: ${{ vars.RY_ANALYTICS_SITEID }}
          GSITEVERIFICATION: ${{ vars.GSITEVERIFICATION }}
          DOCS_BASE: '/multi-scrobbler'
        run: npm run build
        working-directory: ./docsite

      - name: Replace canonical
        working-directory: ./docsite
        run: node --experimental-strip-types canonical-replace.ts ./build

      # Popular action to deploy to GitHub Pages:
      # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e #4.0.0
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          # Build output to publish to the `gh-pages` branch:
          publish_dir: ./docsite/build
          # The following lines assign commit authorship to the official
          # GH-Actions bot for deploys to `gh-pages` branch:
          # https://github.com/actions/checkout/issues/13#issuecomment-724415212
          # The GH actions bot is used by default if you didn't specify the two fields.
          # You can swap them out with your own user credentials.
          user_name: github-actions[bot]
          user_email: 41898282+github-actions[bot]@users.noreply.github.com

      - name: Trigger dependent build
        if: ${{ vars.DOCS_REPO  != ''}}
        run: |
          # Trigger builds in dependent repositories
          curl -X POST \
            -H "Accept: application/vnd.github+json" \
            -H "Authorization: Bearer ${{ secrets.DOCS_DISPATCH_TOKEN }}" \
            "https://api.github.com/repos/${{ vars.DOCS_REPO }}/dispatches" \
            -d "{
              \"event_type\": \"release\",
              \"client_payload\": {
                \"commit\": \"${{ github.sha }}\"
              }
            }"
      - name: Trigger CF Pages build
        if: ${{ vars.CF_PAGES == 'true' }}
        run: |
          # trigger CF pages hook deployment
          curl -d "" \
            "${{ secrets.CF_PAGES_HOOK }}"