name: "Code Checks"

on: [push, pull_request]

jobs:
  build:
    name: PHP ${{ matrix.php-versions }} on ${{ matrix.operating-system }}
    runs-on: ${{ matrix.operating-system }}
    strategy:
      matrix:
        operating-system: [windows-latest, ubuntu-latest, macos-latest]
        php-versions: ['7.4', '8.0', '8.1', '8.2']

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

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          tools: pecl
          extensions: fileinfo
          ini-values: memory_limit=-1    

      - name: Validate composer.json
        run: composer validate

      - name: Install Dependencies
        run: composer install

      - name: Static Analysis
        run: composer analyze

      - name: Run Unit Tests
        run: composer test

      - name: Check Coding Style
        run: composer check
