OskarStark / php-cs-fixer-ga

GithubAction for PHP-CS-Fixer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Check only changed files in PR

charleskj opened this issue · comments

Is there any option to validate only the changed files in PR ?

Not yet

You can do it with one more extra step:

    steps:
      - uses: actions/checkout@v3

      - name: Get Changed Files @ all
        id: all-changes
        uses: tj-actions/changed-files@v35
        with:
          files: |
            lib/**
            tests/**

...

      - name: PHP-CS-Fixer
        uses: docker://oskarstark/php-cs-fixer-ga
        if: ${{ steps.all-changes.outputs.all_changed_files }}
        with:
          args: --config=.php-cs-fixer.base.php --diff --dry-run ${{ join(steps.all-changes.outputs.all_changed_files, ' ') }}

At this point you can create a specific config without finder.

.php-cs-fixer.base.php

<?php

$fixer = (new PhpCsFixer\Config())
    ->setRules([
        'no_spaces_after_function_name' => true,
        'no_spaces_inside_parenthesis' => true,
    ])
    ->setRiskyAllowed(true)
    ->setCacheFile('.php-cs-fixer.cache')
;

return $fixer;

.php-cs-fixer.dist.php

<?php

$fixer = require __DIR__ .'/.php-cs-fixer.base.php';

$fixer->setFinder((new PhpCsFixer\Finder())
    ->in(__DIR__.'/lib')
    ->in(__DIR__.'/tests')
    ->append([__FILE__]));

return $fixer;
commented

Not yet

@OskarStark still "not yet"?


After seeing @connorhu answer I have made the following setup according to the php-cs-fixer documentation.

      - name: Get changed files
        id: changed-files
        uses: tj-actions/changed-files@v38
        with:
          separator: ','

      - name: PHP CS Fixer
        run: |
          CHANGED_FILES=$(echo "${{ steps.changed-files.outputs.all_changed_and_modified_files }}" | tr "," "\n")
          if ! echo "${CHANGED_FILES}" | grep -qE "^(\\.php-cs-fixer(\\.dist)?\\.php|composer\\.lock)$"; then EXTRA_ARGS=$(printf -- '--path-mode=intersection\n--\n%s' "${CHANGED_FILES}"); else EXTRA_ARGS=''; fi
          vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --dry-run --diff --using-cache=no ${EXTRA_ARGS}

Note: I'm not using this action but php-cs-fixer as dev dependency.

Would you send a PR adding your solution to the README file?

commented

@OskarStark Here you go: #98