name: CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
      - name: Cache Node.js modules
        uses: actions/cache@v2
        with:
          # npm cache files are stored in `~/.npm` on Linux/macOS
          path: ~/.npm
          key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.OS }}-node-
            ${{ runner.OS }}-

        # check license headers
      - name: Check license headers
        run: ./check-headers.sh

        # use fresh install
      - name: Install Dependencies
        run: npm ci

        # check code with linter
      - name: Lint Code
        run: npm run lint

        # run provided tests
      - name: Test Code
        run: npm test

        # build modules with microbundle
      - name: Build
        run: npm run build
