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']

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

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          tools: composer, pecl
          extensions: svm, mbstring, gd, 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: Unit Tests
        run: composer test

      - name: Coding Style
        run: composer check
