name: Deploy Backend

on:
  workflow_run:
    workflows: [Upstream Sync]
    types: [completed]
  push:
    tags:
      - "*"
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18

      - uses: pnpm/action-setup@v3
        name: Install pnpm
        id: pnpm-install
        with:
          version: 8
          run_install: false

      - name: Deploy Backend for ${{ github.ref_name }}
        run: |
          export debug_mode=${{ secrets.DEBUG_MODE }}
          export use_mail_wasm_parser=${{ secrets.BACKEND_USE_MAIL_WASM_PARSER }}
          cd worker/
          echo '${{ secrets.BACKEND_TOML }}' > wrangler.toml
          pnpm install --no-frozen-lockfile

          if [ -n "$use_mail_wasm_parser" ]; then
            echo "Using mail-parser-wasm-worker"
            pnpm add mail-parser-wasm-worker
            git apply ../.github/config/mail-parser-wasm-worker.patch
            echo "Applied mail-parser-wasm-worker patch"
          fi

          if [ -n "$debug_mode" ]; then
            pnpm run deploy
          else
            output=$(pnpm run deploy 2>&1)
            if [ $? -ne 0 ]; then
                code=$?
                echo "Command failed with exit code $code"
                exit $code
            fi
          fi
          echo "Deployed for tag ${{ github.ref_name }}"
        env:
          CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
          CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
