name: Deploy 🏗️

on:
  workflow_call:
    inputs:
      branch:
        required: true
        type: string
      commit:
        required: false
        type: string
      comment:
        required: false
        type: boolean
      artifact_name:
        required: false
        type: string
        default: frontend

jobs:
  cf-pages:
    name: CloudFlare Pages 📃
    runs-on: ubuntu-latest
    environment: 
      name: ${{ inputs.branch == 'master' && 'Production' || 'Preview' }}
      url: ${{ steps.cf.outputs.deployment-url }}
    outputs:
      url: ${{ steps.cf.outputs.deployment-url }}

    steps:
      - name: Download workflow artifact ⬇️
        uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
        with:
          name: ${{ inputs.artifact_name }}
          path: dist

      - name: Publish to Cloudflare Pages 📃
        uses: cloudflare/wrangler-action@b2a0191ce60d21388e1a8dcc968b4e9966f938e1 # v3.11.0
        id: cf
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          command: pages deploy dist --project-name=jellyfin-web --branch=${{ inputs.branch }}

  compose-comment:
    name: Compose and push comment 📝
    # Always run so the comment is composed for the workflow summary
    if: ${{ always() }}
    uses: ./.github/workflows/__job_messages.yml
    secrets: inherit
    needs:
      - cf-pages

    with:
      branch: ${{ inputs.branch }}
      commit: ${{ inputs.commit }}
      preview_url: ${{ needs.cf-pages.outputs.url }}
      in_progress: false
      comment: ${{ inputs.comment }}
