Skip to content

refinery29/php-cs-fixer-config

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

About

πŸ““ Provides a configuration for friendsofphp/php-cs-fixer, used within Refinery29.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •