refinery29/php-cs-fixer-config

Provides configurations for friendsofphp/php-cs-fixer, used within Refinery29.

This package's canonical repository appears to be gone and the package has been frozen as a result.

0.10.1 2017-05-29 12:26 UTC

README

Build Status Code Climate Test Coverage Latest Stable Version Total Downloads

This repository provides configurations for friendsofphp/php-cs-fixer, which we use to verify and enforce a single coding standard for PHP code within Refinery29.

Installation

Run

$ composer require --dev refinery29/php-cs-fixer-config

Usage

Pick a configuration

The following configurations are available:

  • Refinery29\CS\Config\Php56
  • Refinery29\CS\Config\Php70
  • Refinery29\CS\Config\Php71

Configuration

Create a configuration file .php_cs in the root of your project:

<?php

$config = new Refinery29\CS\Config\Php56();
$config->getFinder()->in(__DIR__);

$cacheDir = getenv('TRAVIS') ? getenv('HOME') . '/.php-cs-fixer' : __DIR__;

$config->setCacheFile($cacheDir . '/.php_cs.cache');

return $config;

💡 Optionally, you can specify a header comment to use, which will automatically enable the header_comment fixer:

$header = <<<EOF
Copyright (c) 2016 Refinery29, Inc.

For the full copyright and license information, please view
the LICENSE file that was distributed with this source code.
EOF;

$config = new Refinery29\CS\Config\Php56($header);

Git

Add .php_cs.cache (this is the cache file created by php-cs-fixer) to .gitignore:

vendor/
.php_cs.cache

Travis

Update your .travis.yml to cache the php_cs.cache file:

cache:
  directories:
    - $HOME/.php-cs-fixer

Then run php-cs-fixer in the script section:

script:
  - vendor/bin/php-cs-fixer fix --config=.php_cs --verbose --diff --dry-run

If you only want to run php-cs-fixer on one PHP version, update your build matrix and use a condition:

matrix:
  include:
    - php: 5.5
      env: WITH_CS=true
    - php: 5.6
      env: WITH_COVERAGE=true

script:
  - if [[ "$WITH_CS" == "true" ]]; then vendor/bin/php-cs-fixer fix --config=.php_cs --verbose --diff --dry-run; fi

Makefile

Create a Makefile with a composer (because we're lazy) and a cs target:

composer:
	composer validate
	composer install

cs: composer
	vendor/bin/php-cs-fixer fix --config=.php_cs --verbose --diff

Fixing issues

Manually

If you need to fix issues locally, just run

$ make cs

Pre-commit hook

You can add a pre-commit hook

$ touch .git/pre-commit && chmod +x .git/pre-commit

Paste this into .git/pre-commit:

#!/usr/bin/env bash

echo "pre commit hook start"

CURRENT_DIRECTORY=`pwd`
GIT_HOOKS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

PROJECT_DIRECTORY="$GIT_HOOKS_DIR/../.."

cd $PROJECT_DIRECTORY;
PHP_CS_FIXER="vendor/bin/php-cs-fixer"

HAS_PHP_CS_FIXER=false

if [ -x "$PHP_CS_FIXER" ]; then
    HAS_PHP_CS_FIXER=true
fi

if $HAS_PHP_CS_FIXER; then
    git status --porcelain | grep -e '^[AM]\(.*\).php$' | cut -c 3- | while read line; do
        ${PHP_CS_FIXER} fix --config=.php_cs --verbose ${line};
        git add "$line";
    done
else
    echo ""
    echo "Please install php-cs-fixer, e.g.:"
    echo ""
    echo "  composer require --dev friendsofphp/php-cs-fixer:^2.2.0
    echo ""
fi

cd $CURRENT_DIRECTORY;
echo "pre commit hook finish"

💡 See https://gist.github.com/jwage/c4ef1dcb95007b5be0da by @jwage (adjusted by @rcatlin for @refinery29).

Contributing

Please have a look at CONTRIBUTING.md.

License

This package is licensed using the MIT License.