name: Upload API
env:
  CI: true
  FORCE_COLOR: 1
on:
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - 'packages/upload-api/**'
      - '.github/workflows/upload-api.yml'
      - 'pnpm-lock.yaml'
      - '.env.tpl'
  pull_request:
    paths:
      - 'packages/upload-api/**'
      - '.github/workflows/upload-api.yml'
      - 'pnpm-lock.yaml'
      - '.env.tpl'
jobs:
  check:
    name: Typecheck
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Install
        uses: pnpm/action-setup@v2.2.3
        with:
          version: 8

      - name: Setup
        uses: actions/setup-node@v3
        with:
          node-version: 16
          registry-url: https://registry.npmjs.org/
          cache: 'pnpm'

      - name: Prepare
        run: pnpm install

      - name: Build
        run: |
          pnpm install
          pnpm run --if-present build

      - name: Check
        uses: gozala/typescript-error-reporter-action@v1.0.8
        with:
          project: packages/upload-api/tsconfig.json
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Install
        uses: pnpm/action-setup@v2.2.3
        with:
          version: 8

      - name: Setup
        uses: actions/setup-node@v3
        with:
          node-version: 16
          registry-url: https://registry.npmjs.org/
          cache: 'pnpm'

      - name: Build
        run: |
          pnpm install
          pnpm run --if-present build

      - name: Test
        run: pnpm -r --filter @web3-storage/upload-api run test

      - name: Dependency check
        run: pnpm -r --filter @web3-storage/upload-api exec depcheck
