name: Deploy to Cloudflare Workers

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: docker
    container:
      image: oven/bun:latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install dependencies
        run: bun install --frozen-lockfile

      - name: Build
        run: bun run build

      - name: Verify build output
        run: |
          echo "--- Checking build output ---"
          ls -la .svelte-kit/cloudflare/ || echo "ERROR: .svelte-kit/cloudflare/ does not exist!"
          test -f .svelte-kit/cloudflare/_worker.js && echo "_worker.js exists" || echo "ERROR: _worker.js not found!"

      - name: Verify secrets are set
        run: |
          if [ -z "$CLOUDFLARE_API_TOKEN" ]; then
            echo "ERROR: CLOUDFLARE_API_TOKEN is empty or not set!"
            exit 1
          else
            echo "CLOUDFLARE_API_TOKEN is set (length: ${#CLOUDFLARE_API_TOKEN})"
          fi
          if [ -z "$CLOUDFLARE_ACCOUNT_ID" ]; then
            echo "ERROR: CLOUDFLARE_ACCOUNT_ID is empty or not set!"
            exit 1
          else
            echo "CLOUDFLARE_ACCOUNT_ID is set (length: ${#CLOUDFLARE_ACCOUNT_ID})"
          fi
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}

      - name: Deploy to Cloudflare Workers
        timeout-minutes: 10
        run: |
          echo "--- Wrangler version ---"
          bunx wrangler --version
          echo "--- Starting deploy ---"
          bunx wrangler deploy --config wrangler.jsonc
        env:
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          WRANGLER_LOG: debug
          CI: true