name: Continuous Integration

on:
  - push

jobs:
  run:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-versions:
          - '7.4'
          - '8.0'
          - '8.1'
          - '8.2'
          - '8.3'
    name: PHP ${{ matrix.php-versions }}
    steps:
      - uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          coverage: none

      - name: Validate composer.json and composer.lock
        run: composer validate

      - name: Install dependencies
        uses: ramsey/composer-install@v3
        with:
          dependency-versions: highest
          composer-options: "--prefer-dist"

      - name: Run PHPUnit
        run: vendor/bin/phpunit

      - name: Run PHPCS
        run: ./vendor/bin/phpcs -s --runtime-set ignore_warnings_on_exit 1

      - name: Run Psalm
        run: vendor/bin/psalm
