name: glide

on:
  pull_request: ~
  push:
    branches:
      - master

jobs:
  tests:
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: false
      matrix:
        php-version: ['8.1', '8.2', '8.3', '8.4', '8.5']
        dependencies: [highest]
        include:
          - php-version: '8.1'
            dependencies: lowest
    steps:
      - uses: actions/checkout@v4

      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          extensions: gd, imagick
          coverage: pcov

      - name: Composer install
        uses: ramsey/composer-install@v3
        with:
          dependency-versions: ${{ matrix.dependencies }}

      - name: PHPUnit
        run: |
          if [[ ${{ matrix.php-version }} == '8.3' ]]; then
            vendor/bin/phpunit --display-incomplete --display-skipped --display-deprecations --display-phpunit-deprecations --coverage-clover=coverage.xml
          else
            vendor/bin/phpunit
          fi

      - name: Code Coverage Report
        if: matrix.php-version == '8.3'
        uses: codecov/codecov-action@v3

  coding-style:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4

      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
          extensions: gd, imagick

      - name: Composer install
        uses: ramsey/composer-install@v3

      - name: php-cs-fixer
        run: |
          vendor/bin/php-cs-fixer fix --dry-run --diff --allow-risky=yes

  static-analysis:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4

      - uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
          extensions: gd, imagick

      - name: Composer install
        uses: ramsey/composer-install@v3

      - name: phpstan
        if: always()
        run: |
          vendor/bin/phpstan --error-format=github
