Skip to content

Instantly share code, notes, and snippets.

@mardix
Created September 4, 2012 17:06

Revisions

  1. mardix created this gist Sep 4, 2012.
    56 changes: 56 additions & 0 deletions php-cs-fixer-pre-commit.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    #!/usr/bin/php
    <?php
    /**
    * .git/hooks/pre-commit
    *
    * This pre-commit hooks will check for PHP error (lint), and make sure the code
    * is PSR compliant.
    *
    * Dependecy: PHP-CS-Fixer (https://github.com/fabpot/PHP-CS-Fixer)
    *
    * @author Mardix http://github.com/mardix
    * @since Sept 4 2012
    *
    */

    /**
    * collect all files which have been added, copied or
    * modified and store them in an array called output
    */
    exec('git diff --cached --name-status --diff-filter=ACM', $output);

    foreach ($output as $file) {

    $fileName = trim(substr($file, 1) );

    /**
    * Only PHP file
    */
    if (pathinfo($fileName,PATHINFO_EXTENSION) == "php") {

    /**
    * Check for error
    */
    $lint_output = array();
    exec("php -l " . escapeshellarg($fileName), $lint_output, $return);

    if ($return == 0) {

    /**
    * PHP-CS-Fixer && add it back
    */
    exec("php-cs-fixer fix {$fileName} --level=all; git add {$fileName}");

    } else {

    echo implode("\n", $lint_output), "\n";

    exit(1);

    }

    }

    }

    exit(0);