name: Continuous Integration / Deployment

on:
  push:
    branches:
      - '**'
  pull_request:

jobs:
  testing:
    name: ESLint and TypeScript compilation
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Project
        uses: actions/checkout@v2

      - name: Add problem matcher
        run: echo "::add-matcher::.github/problemMatchers/eslint.json" && echo "::add-matcher::.github/problemMatchers/tsc.json"

      - name: Use Node.js v16
        uses: actions/setup-node@v2
        with:
          node-version: 16
          cache: npm
          registry-url: https://registry.npmjs.org/

      - name: Install dependencies
        run: npm ci

      - name: Check lint on discord-api-types
        run: npm run test:lint

      - name: Run TSC
        run: npm run build:ci

  tsd:
    name: TSD checks
    runs-on: ubuntu-latest

    needs: testing
    if: needs.testing.result == 'success'

    steps:
      - name: Checkout Project
        uses: actions/checkout@v2

      - name: Use Node.js v16
        uses: actions/setup-node@v2
        with:
          node-version: 16

      - name: Install Dependencies
        run: npm ci

      - name: Run TSD
        run: npm run test:types
