on: # yamllint disable-line rule:truthy
  pull_request: ~
  push:
    branches:
      - "main"
      - "[0-9].*"

name: "Coding Standards"

jobs:
  php-cs-fixer:
    name: "php-cs-fixer"

    runs-on: "ubuntu-latest"

    strategy:
      matrix:
        php-version:
          - "7.4"

    steps:
      - name: "Checkout code"
        uses: "actions/checkout@v4"

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

      - name: "Determine composer cache directory"
        id: "composer-cache"
        run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT"

      - name: "Cache dependencies installed with composer"
        uses: "actions/cache@v3"
        with:
          path: "${{ steps.composer-cache.outputs.directory }}"
          key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}"
          restore-keys: |
            composer-${{ matrix.php-version }}-
            composer-

      - name: "Download dependencies"
        run: |
          composer update --ansi --no-interaction --no-progress --optimize-autoloader
          composer bin php-cs-fixer install --ansi --no-interaction --no-progress --optimize-autoloader

      - name: "Cache cache file for php-cs-fixer"
        uses: "actions/cache@v3"
        with:
          path: ".build/php-cs-fixer/"
          key: "php-cs-fixer-${{ matrix.php-version }}-${{ github.ref_name }}"
          restore-keys: |
            php-cs-fixer-${{ matrix.php-version }}-main
            php-cs-fixer-${{ matrix.php-version }}-

      - name: "Run php-cs-fixer"
        run: |
          vendor/bin/php-cs-fixer fix --ansi --diff --dry-run --verbose

  yamllint:
    name: "yamllint"

    runs-on: "ubuntu-latest"

    steps:
      - name: "Checkout code"
        uses: "actions/checkout@v4"

      - name: "Lint YAML files"
        uses: "ibiqlik/action-yamllint@v3.1.1"
        with:
          config_file: ".yamllint.yaml"
          file_or_dir: "."
          strict: true
