# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Commits

on: [push]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        node: [14.0.0, 14.x, 16.x, 18.x]
        os: [ubuntu-22.04]

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Use Node.js ${{ matrix.node }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
      - run: npm ci
      - run: npm run tsc
      - run: npm test
        env:
          FORCE_COLOR: 1
          INFURA_KEY: ${{ secrets.TEST_INFURA_KEY }}

  build-all:
    strategy:
      fail-fast: false
      matrix:
        node: [14.0.0, 14.x, 16.x, 18.x]
        os: [windows-2019, ubuntu-20.04, ubuntu-22.04, macos-12]

    runs-on: ${{ matrix.os }}

    if: github.ref == 'refs/heads/develop'

    steps:
      - uses: actions/checkout@v3
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - name: Use Node.js ${{ matrix.node }}
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}

      - name: Add msbuild to PATH
        # we need msbuild tools for the `bigint-buffer` module
        if: startsWith(matrix.os, 'windows-')
        uses: microsoft/setup-msbuild@v1.1

      - run: npm ci
      - run: npm run tsc
      - run: npm test
        env:
          FORCE_COLOR: 1
          INFURA_KEY: ${{ secrets.TEST_INFURA_KEY }}
