It's simple baseline for PHP CS Fixer.
Pros:
Base project has requires for it but not implemented yet: https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues/6451
So, it's some work around till baseline will be implemented in the PHP CS Fixer.
There are few ways of installation:
You can install this package with Phive. It permits you to install package by one console command without extending dependencies in your composer-files.
phive install php-cs-fixer-baseline
Sometimes you may need to update database of package-aliases of PHIVE. See issue #3 So, just call console command for it:
phive update-repository-list
To upgrade this package use the following command:
phive update php-cs-fixer-baseline
You can install this package with Composer:
composer require --dev aeliot/php-cs-fixer-baseline
Download PHAR directly to root directory of the project or in another place as you wish.
# Do adjust the URL if you need a release other than the latest
wget -O pcsf-baseline.phar "https://github.com/Aeliot-Tm/php-cs-fixer-baseline/releases/latest/download/pcsf-baseline.phar"
wget -O pcsf-baseline.phar.asc "https://github.com/Aeliot-Tm/php-cs-fixer-baseline/releases/latest/download/pcsf-baseline.phar.asc"
# Check that the signature matches
gpg --verify pcsf-baseline.phar.asc pcsf-baseline.phar
# Check the issuer (the ID can also be found from the previous command)
gpg --keyserver hkps://keys.openpgp.org --recv-keys 9D0DD6FCB92C84688B777DF59204DEE8CAE9C22C
rm pcsf-baseline.phar.asc
chmod +x pcsf-baseline.phar
Finder
from the config of PHP CS Fixer to the separate file.
It expects .php-cs-fixer-finder.php
at the root of the project.Add filtering of files detected by Finder.
use Aeliot\PhpCsFixerBaseline\Service\FilterFactory;
$finder->filter((new FilterFactory())->createFilter(__DIR__ . '/.php-cs-fixer-baseline.json', $config));
.php-cs-fixer.dist.php
)
Phar::loadPhar('/path/to/pcsf-baseline.phar', 'pcsf-baseline.phar');
require_once 'phar://pcsf-baseline.phar/vendor/autoload.php';
php pcsf-baseline.phar
vendor/bin/pcsf-baseline
See options of it below. You can see how it is configured in this project.
This script store relative paths to files in baseline file by default. It is useful when baseline used in different environments.
Short name | Long name | Description | Default value |
---|---|---|---|
a | absolute | Store absolute paths in baseline file. It does not expect any value. | |
b | baseline | Pathname of baseline file. | .php-cs-fixer-baseline.json |
c | config | Pathname of config file. | .php-cs-fixer.dist.php |
d | config-dir | Config files path | '' |
f | finder | Pathname of file with definition of Finder. | .php-cs-fixer-finder.php |
w | workdir | Working directory. |
Options baseline
, config
, finder
can be absolute or related or omitted at all. In the last case it expects
that files are in the root directory of project.
You can use option workdir
to customize path to working directory. Otherwise, directory where the script called
is used. The same with the filter for PHP CS Fixer. You may customize working directory by third option for
filter factory.
Pass option absolute
when you want to force saving of absolute paths to files of your project in baseline.
It cannot be used with option workdir
.
workdir
MUST be absolute. You cannot use "double dots" in it.realpath()
for normalisation of paths of files returned by Finder
. For proper cutting of workdir
out of file path to make it relative. It may return unexpected result based on current user permissions.
Look for restrictions of this function in official documentation
of PHP.realpath()
returns an empty result or path of file returned by Finder
is not from working
directory then path stored "as is".