name: Build

on:
  push: ~
  pull_request: ~
  release:
    types: [created]
  schedule:
    -
      cron: "0 1 * * 6" # Run at 1am every Saturday

jobs:
  tests:
    runs-on: ubuntu-latest

    name: "PHP ${{ matrix.php }}, ECS ${{ matrix.ecs }}"

    strategy:
      fail-fast: false
      matrix:
        php: [8.0]
        ecs: [10.*, 11.*]

    steps:
      -
        uses: actions/checkout@v2

      -
        name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "${{ matrix.php }}"
          extensions: intl
          tools: symfony
          coverage: none

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

      -
        name: Cache Composer
        uses: actions/cache@v2
        with:
          path: ${{ steps.composer-cache.outputs.dir }}
          key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.json **/composer.lock') }}
          restore-keys: |
            ${{ runner.os }}-php-${{ matrix.php }}-composer-

      -
        name: Configure Flex
        run: |
          composer global config --no-plugins allow-plugins.symfony/flex true
          composer global require --no-progress --no-scripts --no-plugins "symfony/flex:^1.10"

      -
        name: Require EasyCodingStandard version
        run: composer require symplify/easy-coding-standard:${{ matrix.ecs }} --no-update --no-scripts

      -
        name: Install PHP dependencies
        run: composer install --no-interaction

      -
        name: Validate composer.json
        run: composer validate --ansi --strict

      -
        name: Run test
        run: vendor/bin/ecs check --config ecs.php tests ecs.php
