name: Test CLI

on:
  workflow_call:
    inputs:
      E2B_DOMAIN:
        required: false
        type: string
        default: ''
    secrets:
      E2B_API_KEY:
        required: true

permissions:
  contents: read

jobs:
  test:
    defaults:
      run:
        working-directory: ./packages/cli
        shell: bash
    name: CLI - Build (${{ matrix.os }})
    strategy:
      matrix:
        os: [ubuntu-22.04, windows-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Parse .tool-versions
        uses: wistia/parse-tool-versions@v2.1.1
        with:
          filename: '.tool-versions'
          uppercase: 'true'
          prefix: 'tool_version_'

      - name: Install pnpm
        uses: pnpm/action-setup@v4
        with:
          version: '${{ env.TOOL_VERSION_PNPM }}'

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '${{ env.TOOL_VERSION_NODEJS }}'
          registry-url: 'https://registry.npmjs.org'
          cache: pnpm
          cache-dependency-path: pnpm-lock.yaml

      - name: Configure pnpm
        run: |
          pnpm config set auto-install-peers true

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

      - name: Build the SDK (pre-requisite for the tests)
        run: pnpm build
        working-directory: ./packages/js-sdk

      - name: Build the CLI
        run: pnpm build
        working-directory: ./packages/cli

      - name: Run tests
        run: pnpm test
        working-directory: ./packages/cli
        env:
          E2B_API_KEY: ${{ secrets.E2B_API_KEY }}
          E2B_DOMAIN: ${{ inputs.E2B_DOMAIN }}
