diff --git a/.github/workflows/test-coding-standards.yml b/.github/workflows/test-coding-standards.yml new file mode 100644 index 000000000..7e5f18820 --- /dev/null +++ b/.github/workflows/test-coding-standards.yml @@ -0,0 +1,70 @@ +name: Coding Standards + +on: + push: + paths: + - '**.php' + - 'spark' + - '.github/workflows/test-coding-standards.yml' + pull_request: + paths: + - '**.php' + - 'spark' + - '.github/workflows/test-coding-standards.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + lint: + name: PHP ${{ matrix.php-version }} Lint with PHP CS Fixer + runs-on: ubuntu-22.04 + + strategy: + fail-fast: false + matrix: + php-version: + - '8.1' + - '8.3' + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + extensions: tokenizer + coverage: none + + - name: Get composer cache directory + run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV + + - name: Cache dependencies + uses: actions/cache@v4 + with: + path: ${{ env.COMPOSER_CACHE_FILES_DIR }} + key: ${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.php-version }}- + ${{ runner.os }}- + + - name: Install dependencies + run: composer update --ansi --no-interaction + + - name: Run lint on `app/`, `admin/`, `public/` + run: vendor/bin/php-cs-fixer fix --verbose --ansi --dry-run --config=.php-cs-fixer.no-header.php --using-cache=no --diff + + - name: Run lint on `system/`, `utils/`, and root PHP files + run: vendor/bin/php-cs-fixer fix --verbose --ansi --dry-run --using-cache=no --diff + + - name: Run lint on `tests` + run: vendor/bin/php-cs-fixer fix --verbose --ansi --dry-run --config=.php-cs-fixer.tests.php --using-cache=no --diff + + - name: Run lint on `user_guide_src/source/` + run: vendor/bin/php-cs-fixer fix --verbose --ansi --dry-run --config=.php-cs-fixer.user-guide.php --using-cache=no --diff