📓 Provides a configuration for friendsofphp/php-cs-fixer, used within Refinery29.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
.travis
src
test
.codeclimate.yml
.editorconfig Enhancement: Add .editorconfig May 29, 2017
.gitattributes
.gitignore
.php_cs Fix: Use Php56 Apr 5, 2017
.travis.yml Enhancement: Configure preferred installation source in composer.json May 29, 2017
LICENSE
Makefile Fix: Remove composer.lock in composer target Apr 6, 2017
README.md Fix: Update README.md Apr 10, 2017
composer.json Fix: Indent composer.json with 2 spaces May 29, 2017
phpunit.xml

README.md

php-cs-fixer-config

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.