on:
  push:
  schedule:
    - cron: 0 10 9 * *

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php:
          - 7.3
          - 7.4
          - 8.0
        composer:
          - ""
          - "--prefer-lowest"

    steps:
      - uses: actions/checkout@v1

      - name: Create Docker Container
        run: |
          docker build . -t ci-image --build-arg PHP_VERSION=${{ matrix.php }}
          docker run --interactive --detach --volume ${{ github.workspace }}:/app --name ci ci-image

      - name: Install Dependencies
        run: docker exec ci composer update --no-interaction --no-ansi --prefer-dist ${{ matrix.composer }}

      - name: PHPUnit
        run: docker exec ci vendor/bin/phpunit

      - name: PHPStan
        run: |
          docker exec ci vendor/bin/phpstan analyse --level=max --configuration=phpstan-src.neon src
          docker exec ci vendor/bin/phpstan analyse --level=max --configuration=phpstan-tests.neon tests

      - name: Coding Standards
        run: docker exec ci vendor/bin/phpcs --standard=phpcs.xml

      - name: Check Dependencies
        run: docker exec ci vendor/bin/composer-require-checker

      - name: Composer Validate
        run: docker exec ci composer validate --strict
