name: 'CI'

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

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x, 18.x, 20.x, 21.x]
      fail-fast: false

    steps:
      - uses: actions/checkout@v3
        with:
          persist-credentials: true
      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v40
      - name: List all changed files
        run: |
          for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
            echo "$file was changed"
          done
      - name: Check changes
        id: changed-ignored
        uses: tj-actions/changed-files@v40
        with:
          files: |
            **.md
            sandbox/**
            examples/**
            .github/**
            templates/**
            bin/**
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node-version }}
          cache: npm
        if: steps.changed-ignored.outputs.only_modified == 'false'
      - run: npm ci
        if: steps.changed-ignored.outputs.only_modified == 'false'
      - run: npm test
        if: steps.changed-ignored.outputs.only_modified == 'false'
