name: Pull request

on:
  pull_request:
    types:
      - opened
      - reopened
      - synchronize
      - ready_for_review
    branches:
      - main
      - releases/*

env:
  NODE_OPTIONS: '--max-old-space-size=8192'
  # See https://github.com/cypress-io/cypress/issues/25357
  ELECTRON_EXTRA_LAUNCH_ARGS: --disable-gpu
jobs:
  preflight-check:
  # Prevents running the workflow when a PR is marked as draft.
    runs-on: ubuntu-latest
    outputs:
      skip: ${{ steps.check.outputs.skip }}
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      
      - name: Enable Corepack
        run: |
          corepack enable
          corepack prepare yarn@4.5.0 --activate
  
      - name: Check if PR is draft
        id: check
        run: |
          if [[ "${{ github.event.pull_request.draft }}" == "true" ]]; then
            skip=true
          else
            skip=false
          fi
          echo "skip=${skip}" >> $GITHUB_OUTPUT
          echo "skip=${skip}"

  lint-and-build:
    # Execute lint and build when a PR is ready
    needs: preflight-check
    if: needs.preflight-check.outputs.skip == 'false'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      
      - name: Enable Corepack
        run: |
          corepack enable
          corepack prepare yarn@4.5.0 --activate

      - run: yarn install --immutable
      - run: yarn all:lint
      - run: yarn all:build
  
