name: CI

on:
  pull_request:
  push:
    branches:
      - main

jobs:
  shellcheck:
    name: Lint Shell Scripts
    runs-on: ubuntu-latest

    steps:
    - name: Checkout Code
      uses: actions/checkout@v3

    - name: Run ShellCheck
      uses: ludeeus/action-shellcheck@1.1.0

  test:
    name: Tests
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]

    steps:
    - name: Checkout Code
      uses: actions/checkout@v3

    - name: Install NodeJS
      uses: actions/setup-node@v3
      with:
        node-version: ${{ matrix.node-version }}

    - name: Cache Node Modules
      uses: actions/cache@v3
      id: cache-node-modules
      with:
        path: node_modules
        key: ${{ runner.OS }}-node${{ matrix.node-version }}-dependencies-${{ hashFiles('**/package.json') }}

    - name: Install Dependencies
      if: steps.cache-node-modules.outputs.cache-hit != 'true'
      run: npm install

    - name: Run Tests
      run: npm run test
