# File managed by web3-bot. DO NOT EDIT.
# See https://github.com/protocol/.github/ for details.

name: test & maybe release
on:
  push:
    branches:
      - master
  pull_request:

jobs:

  check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: lts/*
    - uses: ipfs/aegir/actions/cache-node-modules@master
    - run: npm run --if-present lint
    - run: npm run --if-present dep-check

  test-node:
    needs: check
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [windows-latest, ubuntu-latest, macos-latest]
        node: [lts/*]
      fail-fast: true
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:node
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: node

  test-chrome:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:chrome
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: chrome

  test-chrome-webworker:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:chrome-webworker
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: chrome-webworker

  test-firefox:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:firefox
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: firefox

  test-firefox-webworker:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:firefox-webworker
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: firefox-webworker

  test-webkit:
    needs: check
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        node: [lts/*]
      fail-fast: true
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:webkit
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: webkit

  test-webkit-webworker:
    needs: check
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
        node: [lts/*]
      fail-fast: true
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npm run --if-present test:webkit-webworker
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: webkit-webworker

  test-electron-main:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npx xvfb-maybe npm run --if-present test:electron-main
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: electron-main

  test-electron-renderer:
    needs: check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - run: npx xvfb-maybe npm run --if-present test:electron-renderer
      - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1
        with:
          flags: electron-renderer

  release:
    needs: [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-webkit, test-webkit-webworker, test-electron-main, test-electron-renderer]
    runs-on: ubuntu-latest
    if: github.event_name == 'push' && github.ref == 'refs/heads/master'
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: actions/setup-node@v3
        with:
          node-version: lts/*
      - uses: ipfs/aegir/actions/cache-node-modules@master
      - uses: ipfs/aegir/actions/docker-login@master
        with:
          docker-token: ${{ secrets.DOCKER_TOKEN }}
          docker-username: ${{ secrets.DOCKER_USERNAME }}
      - run: npm run --if-present release
        env:
          GITHUB_TOKEN: ${{ secrets.UCI_GITHUB_TOKEN || github.token }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
