name: CI

on:
    push:
        branches: [ main ]
    pull_request:
    schedule:
        -   cron: '0 0 * * MON'

jobs:
    check-cs:
        name: Check Coding Standards
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v3

            - name: PHP-CS-Fixer
              uses: docker://oskarstark/php-cs-fixer-ga
              with:
                args: --config=.php-cs-fixer.php --diff --dry-run

    ci:
        name: Test PHP ${{ matrix.php-version }} ${{ matrix.name }}
        runs-on: ubuntu-latest
        strategy:
            fail-fast: false
            matrix:
                php-version: ['8.1', '8.2']
                composer-flags: ['']
                name: ['']
                include:
                    - php-version: 8.0
                      composer-flags: '--prefer-lowest'
                      name: '(prefer lowest dependencies)'
        steps:
            - name: Checkout
              uses: actions/checkout@v3

            - name: Setup PHP, with composer and extensions
              uses: shivammathur/setup-php@v2
              with:
                  php-version: ${{ matrix.php-version }}
                  extensions: mbstring, xml
                  ini-values: phar.readonly="Off"

            - name: Get composer cache directory
              id: composer-cache
              run: echo "::set-output name=dir::$(composer config cache-files-dir)"

            - name: Cache composer dependencies
              uses: actions/cache@v3
              with:
                  path: ${{ steps.composer-cache.outputs.dir }}
                  key: ${{ runner.os }}-composer-${{ github.sha }}
                  restore-keys: ${{ runner.os }}-composer-

            - name: Install Composer dependencies
              run: |
                  composer update --prefer-dist --no-interaction ${{ matrix.composer-flags }}

            - name: Run Tests
              run: php vendor/bin/simple-phpunit
