name: GrumPHP

on: [push, pull_request]
jobs:
    run:
        runs-on: ${{ matrix.operating-system }}
        timeout-minutes: 10
        strategy:
            matrix:
                operating-system: ['windows-latest', 'ubuntu-latest']
                php-versions: ['7.4', '8.0']
                composer-options: ['', '--prefer-lowest']
            fail-fast: false
        name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }} with ${{ matrix.composer-options }}
        steps:
            - name: Checkout
              uses: actions/checkout@master
            - name: Install PHP
              uses: shivammathur/setup-php@master
              with:
                  php-version: ${{ matrix.php-versions }}
                  tools: 'composer:v2'
                  extensions: mbstring, posix, soap, intl
            - name: Check Versions
              run: |
                  php -v
                  php -m
                  composer --version
            - name: Get composer cache directory
              id: composercache
              run: echo "::set-output name=dir::$(composer config cache-files-dir)"
            - name: Cache dependencies
              uses: actions/cache@v2
              with:
                  path: ${{ steps.composercache.outputs.dir }}
                  key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
                  restore-keys: ${{ runner.os }}-composer-
            - name: Install dependencies
              run: composer update --prefer-dist --no-progress --no-suggest ${{ matrix.composer-options }}
            - name: Set git variables
              run: |
                  git config --global user.email "you@example.com"
                  git config --global user.name "Your Name"
            - name: Run the tests
              run: php vendor/bin/grumphp run --no-interaction
