name: CI

on:
    pull_request: ~
    push:
        branches:
            - main
        tags:
            - '*'

jobs:
    coding-style:
        name: Coding Style
        runs-on: ubuntu-latest
        steps:
            - name: Setup PHP
              uses: shivammathur/setup-php@2.7.0
              with:
                  php-version: 8.0
                  extensions: dom, fileinfo, filter, gd, hash, intl, json, mbstring, pcre, pdo, zlib
                  coverage: none

            - name: Checkout
              uses: actions/checkout@v3

            - name: Install the dependencies
              run: composer install --no-interaction --no-suggest
            - name: Check the coding style
              run: vendor/bin/php-cs-fixer fix --diff --dry-run
            - name: Analyze the code
              run: vendor/bin/phpstan analyze --no-progress

    tests:
        name: PHP ${{ matrix.php }} / SF ^${{ matrix.symfony }}
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                php: [8.0, 8.1, 8.2]
                symfony: [4.4, 5.4, 6.0]
        steps:
            - name: Setup PHP
              uses: shivammathur/setup-php@2.7.0
              with:
                  php-version: ${{ matrix.php }}
                  extensions: dom, fileinfo, filter, gd, hash, intl, json, mbstring, pcre, pdo_mysql, zlib
                  coverage: none

            - name: Checkout
              uses: actions/checkout@v3

            - name: Install the dependencies
              run: |
                composer require symfony/framework-bundle:^${{ matrix.symfony }}
                composer install --no-interaction --no-suggest
            - name: Run the unit tests
              run: vendor/bin/phpunit --colors=always

    prefer-lowest:
        name: Prefer Lowest
        runs-on: ubuntu-latest
        steps:
            - name: Setup PHP
              uses: shivammathur/setup-php@2.7.0
              with:
                  php-version: 8.0
                  extensions: dom, fileinfo, filter, gd, hash, intl, json, mbstring, pcre, pdo_mysql, zlib
                  coverage: none

            - name: Checkout
              uses: actions/checkout@v3

            - name: Install the dependencies
              run: composer update --prefer-lowest --prefer-stable --no-interaction --no-suggest
            - name: Run the unit tests
              run: vendor/bin/phpunit --colors=always
