name: Deploy roocode.com

on:
    push:
        branches:
            - main
        paths:
            - "apps/web-roo-code/**"
    workflow_dispatch:

env:
    VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
    VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}

jobs:
    check-secrets:
        runs-on: ubuntu-latest
        outputs:
            has-vercel-token: ${{ steps.check.outputs.has-vercel-token }}
        steps:
            - name: Check if VERCEL_TOKEN exists
              id: check
              run: |
                  if [ -n "${{ secrets.VERCEL_TOKEN }}" ]; then
                    echo "has-vercel-token=true" >> $GITHUB_OUTPUT
                  else
                    echo "has-vercel-token=false" >> $GITHUB_OUTPUT
                  fi

    deploy:
        runs-on: ubuntu-latest
        needs: check-secrets
        if: ${{ needs.check-secrets.outputs.has-vercel-token == 'true' }}
        steps:
            - name: Checkout code
              uses: actions/checkout@v4
            - name: Setup Node.js and pnpm
              uses: ./.github/actions/setup-node-pnpm
            - name: Migrate evals database
              run: pnpm db:migrate:production
              working-directory: packages/evals
              env:
                  DATABASE_URL: ${{ secrets.EVALS_DATABASE_URL }}
            - name: Install Vercel CLI
              run: npm install --global vercel@canary
            - name: Pull Vercel Environment Information
              run: npx vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
            - name: Build Project Artifacts
              run: npx vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
            - name: Deploy Project Artifacts to Vercel
              run: npx vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}
